JAVA - Day4 - While, for
#1 - While문
public class WhileTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
//반복문
//while, do while
/* while (조건식)
{
// 조건이 참일 동안
// 이 블럭을 반복한다.
// 조건이 거짓이 되면 이 반복문 탈출.
}
*/
// #1 : 1~10까지 출력을 해보자.
int num = 0;
while(num<10)
{
++num;
System.out.println("출력되는 숫자:"+num);
}
// #2 : 1~100까지의 합
int num2 = 0;
int sum=0;
while(num2<=100)
{
sum += num2;
num2++;
}
System.out.println("총합 :"+sum);
System.out.println();
// 직접 해보기
// #3 짝수의 합, 홀수의 합을 각각 출력하자.
int num3 = 1;
int sum2=0;
int sum3=0;
while(num3<=50)
{
sum2 += 2*num3;
sum3 += 2*(num3-1)+1;
num3++;
}
System.out.println("짝수의 총합 :"+sum2);
System.out.println("홀수의 총합 :"+sum3);
System.out.println();
// #3'
int number = 0;
int A = 0; //짝수의 합
int B = 0; //홀수의 합
while (number<101)
{
//짝수인가 홀수인가를 판단해주고, 증감식 넣기.
if(number%2==0)
A+=number;
else
B+=number;
number++;
}
System.out.println("짝수의 합 :"+A+"홀수의 합 :"+B);
}
}
#3 - 중첩 While
public class WhileTest_3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//#1
//중첩 while
System.out.println("#1");
int n = 0;
int m = 0;
while(n<3)
{
System.out.println("외부 while");
while(m<3)
{
System.out.println("내부 while");
m++;
}
n++;
}
System.out.println();
//흠 왜 9번이 안나올까?
//다음으로 생각해보자.
//#2
// 스스로해보기
// 구구단 2~9단을 출력하자.
System.out.println("#2");
int x = 2;
int y = 1;
// while 바로 옆에 ; 하면 에러없이 아무것도 안뜨니까 주의하자!!!!!
while(x<=9)
{
while (y<=9)
{
int z = x*y;
System.out.printf("%d x %d = %d\n", x,y,z);
y++;
}
x++;
}
//x가 2일때만 나오네.
//제대로 증가했는지 보자.
System.out.println("x :" + x);
//x는 제대로 10까지 증가했네.
//무엇이 문제일까?
//y가 10으로 유지되어 반복문을 건너뛰기 때문!
System.out.println();
//#3
//고쳐보기
System.out.println("#3");
int x2 = 2;
int y2 = 1;
while(x2<=9)
{
y2 = 1;
//y2를 다시 1로 만들어서 반복하게 만듦.
while (y2<=9)
{
int z2 = x2*y2;
System.out.printf("%d x %d = %d\n", x2,y2,z2);
y2++;
}
x2++;
System.out.println();
}
}
}
#7 - for문 스스로 만들어보기
public class WhileTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
//반복문
//while, do while
/* while (조건식)
{
// 조건이 참일 동안
// 이 블럭을 반복한다.
// 조건이 거짓이 되면 이 반복문 탈출.
}
*/
// #1 : 1~10까지 출력을 해보자.
int num = 0;
while(num<10)
{
++num;
System.out.println("출력되는 숫자:"+num);
}
// #2 : 1~100까지의 합
int num2 = 0;
int sum=0;
while(num2<=100)
{
sum += num2;
num2++;
}
System.out.println("총합 :"+sum);
System.out.println();
// 직접 해보기
// #3 짝수의 합, 홀수의 합을 각각 출력하자.
int num3 = 1;
int sum2=0;
int sum3=0;
while(num3<=50)
{
sum2 += 2*num3;
sum3 += 2*(num3-1)+1;
num3++;
}
System.out.println("짝수의 총합 :"+sum2);
System.out.println("홀수의 총합 :"+sum3);
System.out.println();
// #3'
int number = 0;
int A = 0; //짝수의 합
int B = 0; //홀수의 합
while (number<101)
{
//짝수인가 홀수인가를 판단해주고, 증감식 넣기.
if(number%2==0)
A+=number;
else
B+=number;
number++;
}
System.out.println("짝수의 합 :"+A+"홀수의 합 :"+B);
}
}
#2 - While 활용하기
import java.util.Scanner;
public class WhileTest_2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//#1
//A~Z 출력하기.
//반복문 구성 3요소
//시작값, 조건식, 증감식
//하나의 문장을 저장하는 자료형 ->char : 2byte
System.out.println("#1");
//#직접해보기
//A~Z를 출력할때 표 처럼 출력해보자.
System.out.println("스스로 해보자");
char ch2 = 'A';
while (ch2<='G')
{
System.out.printf("%c ", ch2);
ch2++;
}
System.out.println();
char ch3 = 'H';
while (ch3<='N')
{
System.out.printf("%c ", ch3);
ch3++;
}
System.out.println();
char ch4 = 'O';
while (ch4<='U')
{
System.out.printf("%c ", ch4);
ch4++;
}
System.out.println();
char ch5 = 'V';
while (ch5<='Z')
{
System.out.printf("%c ", ch5);
ch5++;
}
System.out.println();
System.out.println();
//코드를 줄여보자
System.out.println("간략화");
char ch = 'A';
while (ch<='Z')
{
System.out.printf("%5c",ch);
//%5c의 의미
//5칸을 만들고 맨뒷칸에 출력.
//-를 붙이면 반대로된다.
if(ch%6==0) {
System.out.println();
}
ch++;
}
//왜 A,B만 두개로 뜨고 나머지는 제대로 나올까?
//알파벳의 아스키코드와 관련.
System.out.println();
//#2
//무한반복하기
/*
System.out.println("#2");
while(true)
{
System.out.println("BlueDragon");
}
*/
//#3
//정수를 계속 입력받다가 0을 입력하면 프로그램 종료.
System.out.println("#3");
Scanner sc = new Scanner(System.in);
int num;
while(true)
{
System.out.print("정수입력>>>");
num = sc.nextInt();
if(num==0)
break;
//break : 반복문 하나를 빠져나가라~
System.out.println(num);
}
System.out.println();
//#4
//#3과 같은 조건에서
//정수를 계속 입력받다가
//3의 배수가 입력이 되면 출력x
System.out.println("#4");
int num2;
while(true)
{
System.out.print("정수입력>>>");
num2 = sc.nextInt();
if(num2 == 0)
break;
// 반복문 하나를 빠져나가라!
// 3의 배수가 입력이 되면 출력X
if(num2 % 3 == 0)
{
continue;
//바로 밑에 있는 문장 실행X
//반복조건 비교로 가라~
}
else
{
System.out.println(num2);
}
}
}
}
<#2- 콘솔>
#1
스스로 해보자
A B C D E F G
H I J K L M N
O P Q R S T U
V W X Y Z
간략화
A B
C D E F G H
I J K L M N
O P Q R S T
U V W X Y Z
#3
정수입력>>>10
10
정수입력>>>20
20
정수입력>>>30
30
정수입력>>>0
#4
정수입력>>>10
10
정수입력>>>20
20
정수입력>>>30
정수입력>>>0
public class WhileTest_3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//#1
//중첩 while
System.out.println("#1");
int n = 0;
int m = 0;
while(n<3)
{
System.out.println("외부 while");
while(m<3)
{
System.out.println("내부 while");
m++;
}
n++;
}
System.out.println();
//흠 왜 9번이 안나올까?
//다음으로 생각해보자.
//#2
// 스스로해보기
// 구구단 2~9단을 출력하자.
System.out.println("#2");
int x = 2;
int y = 1;
// while 바로 옆에 ; 하면 에러없이 아무것도 안뜨니까 주의하자!!!!!
while(x<=9)
{
while (y<=9)
{
int z = x*y;
System.out.printf("%d x %d = %d\n", x,y,z);
y++;
}
x++;
}
//x가 2일때만 나오네.
//제대로 증가했는지 보자.
System.out.println("x :" + x);
//x는 제대로 10까지 증가했네.
//무엇이 문제일까?
//y가 10으로 유지되어 반복문을 건너뛰기 때문!
System.out.println();
//#3
//고쳐보기
System.out.println("#3");
int x2 = 2;
int y2 = 1;
while(x2<=9)
{
y2 = 1;
//y2를 다시 1로 만들어서 반복하게 만듦.
while (y2<=9)
{
int z2 = x2*y2;
System.out.printf("%d x %d = %d\n", x2,y2,z2);
y2++;
}
x2++;
System.out.println();
}
}
}
<#3- 콘솔>
#1
외부 while
내부 while
내부 while
내부 while
외부 while
외부 while
#2
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
x :10
#3
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24
3 x 9 = 27
4 x 1 = 4
4 x 2 = 8
4 x 3 = 12
4 x 4 = 16
4 x 5 = 20
4 x 6 = 24
4 x 7 = 28
4 x 8 = 32
4 x 9 = 36
5 x 1 = 5
5 x 2 = 10
5 x 3 = 15
5 x 4 = 20
5 x 5 = 25
5 x 6 = 30
5 x 7 = 35
5 x 8 = 40
5 x 9 = 45
6 x 1 = 6
6 x 2 = 12
6 x 3 = 18
6 x 4 = 24
6 x 5 = 30
6 x 6 = 36
6 x 7 = 42
6 x 8 = 48
6 x 9 = 54
7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63
8 x 1 = 8
8 x 2 = 16
8 x 3 = 24
8 x 4 = 32
8 x 5 = 40
8 x 6 = 48
8 x 7 = 56
8 x 8 = 64
8 x 9 = 72
9 x 1 = 9
9 x 2 = 18
9 x 3 = 27
9 x 4 = 36
9 x 5 = 45
9 x 6 = 54
9 x 7 = 63
9 x 8 = 72
9 x 9 = 81
#4 - For문
public class ForTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*for ( 초기식 ; 조건식 ; 증감식)
{
}
*/
//while의 가독성을 높이기 위해 증가.
//동작 방식은 while과 동일.
//#1
// 1~5까지 출력해보자.
System.out.println("#1");
for(int num = 1; num <=5; num++)
System.out.println(num);
System.out.println();
System.out.println("#1'");
//while 에서도 num 대신에 num++넣으면 줄일수 있기는해..
//그래도 for문이 더 짧음.
int n = 1;
while(n <= 5)
System.out.println(n++);
System.out.println();
//문자 A~Z
System.out.println("#2");
for(char ch = 'a'; ch <= 'z'; ch++)
System.out.printf("%c ",ch);
System.out.println();
System.out.println();
//홀수 짝수 합
System.out.println("#3");
int even1;
int odd1;
int i;
for(even1 = 0, odd1 = 0, i=1; i <= 100; i++)
{
if(i%2==0)
even1+=i;
else
odd1+=i;
}
System.out.println("짝수의 총합 :"+even1+"홀수의 총합 :"+odd1);
//이때 초기화를 for문 안에서 하면 지역변수로 인식되기 때문에
//블럭 밖으로 나가면 인식을 못하게 된다.
System.out.println();
//홀수만 출력하기.
System.out.println("#4");
for(even1 = 0, odd1 = 0, i=1; i <= 100; i++)
{
if(i%2==0)
continue;
System.out.printf("%d ", i);
}
System.out.println();
System.out.println();
//구구단
System.out.println("#5");
int x;
int y;
for(x =2; x <10; x++)
{
for(y=1;y<10;y++)
System.out.printf("%d ",x*y);
System.out.println();
}
}
}
<#4 - 콘솔>
#1
1
2
3
4
5
#1'
1
2
3
4
5
#2
a b c d e f g h i j k l m n o p q r s t u v w x y z
#3
짝수의 총합 :2550홀수의 총합 :2500
#4
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99
#5
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
#5 - for 문을 이용한 계산기
import java.util.Scanner;
public class For_Ex_01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
while(true)
{
System.out.print("정수1: ");
int x = sc.nextInt();
System.out.print("정수2: ");
int y = sc.nextInt();
System.out.println("=====================");
System.out.println("나는 계산기다~");
System.out.println("1. 더하기");
System.out.println("2. 빼기");
System.out.println("3. 곱하기");
System.out.println("4. 나누기");
System.out.println("5. 종료");
System.out.println("=====================");
System.out.println(">>>");
int sel = sc.nextInt();
switch(sel)
{
case 1:
System.out.println("더한 값: "+(x+y));
break;
case 2:
System.out.println("뺀 값: "+(x-y));
break;
case 3:
System.out.println("곱한 값: "+(x*y));
break;
case 4:
if(y==0)
{
System.out.println("0으로 나눌수 없습니다.");
break;
}
System.out.println("나눈 값: "+(x/y));
break;
case 5:
System.out.println("프로그램 종료!");
return;
//함수의 종료.
//main()을 종료해라.
default:
System.out.println("다시 입력하세요!");
}
//switch문의 끝.
System.out.println();
}
//while문의 끝.
//이때 case5에 return이 없다면
//프로그램 종료를 해도 다시 반복된다.
}
}
<#5 - 콘솔>
정수1: 29
정수2: 3
=====================
나는 계산기다~
1. 더하기
2. 빼기
3. 곱하기
4. 나누기
5. 종료
=====================
>>>
3
곱한 값: 87
정수1: 20
정수2: 0
=====================
나는 계산기다~
1. 더하기
2. 빼기
3. 곱하기
4. 나누기
5. 종료
=====================
>>>
4
0으로 나눌수 없습니다.
정수1: 20
정수2: 5
=====================
나는 계산기다~
1. 더하기
2. 빼기
3. 곱하기
4. 나누기
5. 종료
=====================
>>>
9
다시 입력하세요!
정수1: 29
정수2: 3
=====================
나는 계산기다~
1. 더하기
2. 빼기
3. 곱하기
4. 나누기
5. 종료
=====================
>>>
5
프로그램 종료!
#6 - for문을 이용하여 별모양 출력하기
public class For_Ex_02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//#1
//표를 이용하여
//*
//**
//***
//를 출력해보자.
//행이 늘어날떄 열도 같이 늘어나는식으로 for문을 이용해보자.
System.out.println("#1");
int outinit; //행의 역할
int ininit; //열의 역할
for(outinit =1; outinit <=3; outinit++)
{
for(ininit=1; ininit <= outinit; ininit++)
System.out.print("*");
System.out.println();
//이렇게 출력하면 *이 한줄로 나오므로 띄어쓰기 해주자.
}
System.out.println();
//역순으로 배열시켜보자.
//#2
System.out.println("#2");
int outinit2; //행의 역할
int ininit2; //열의 역할
for(outinit2 =1; outinit2 <=3; outinit2++)
{
for(ininit2=1; ininit2 <= (4-outinit2); ininit2++)
System.out.print("*");
System.out.println();
}
}
}
#7 - for문 스스로 만들어보기
import java.util.Scanner;
public class Project_01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/* #1
* 정수 하나를 입력받고
* 입력받은 값의 횟수만큼 자신의 이름을 반복하여 출력하는 프로그램을 작성하자.
*
* #2
* 100이하의 정수하나를 입력받고
* 만약 100을 넘으면 경고문이 뜨고 종료한다.
* 100이하이면 입력한 숫자부터 100까지 모든 정수들의 합을 출력하는 프로그램을 작성하자.
*
* #3
* 점수를 계속 입력받는 작업을 하다가 8의 배수가 5개 입력되면
* 작업을 종료하는 프로그램을 만들자.
*/
System.out.println("첫번째 문제");
Scanner sc = new Scanner (System.in);
String name = "Blue";
System.out.println("횟수를 입력하세요.");
int input = sc.nextInt();
System.out.println("=======================");
for(int num1 = 1; num1<=input; num1++)
System.out.println(name);
System.out.println("=======================");
System.out.println();
System.out.println();
System.out.println("두번째 문제");
System.out.println("100이하의 정수를 입력하세요~");
int num2 = sc.nextInt();
int num3;
int sum = 0;
for(num3 = 1; num3 <= num2; num3++)
{
if (num2 >100)
{
System.out.println("100을 넘는 숫자를 입력하셨습니다.");
System.out.println("다시 입력해주세요.");
break;
}
else
{
sum += num3;
}
}
System.out.println("입력한 숫자까지의 합"+sum);
System.out.println();
System.out.println();
System.out.println("세번째 문제");
int sum2 = 0;
System.out.println("정수를 입력하세요.");
while (sum2 < 5)
{
int num4 = sc.nextInt();
if (num4%8 == 0)
++sum2;
System.out.println("입력된 숫자 :"+num4);
if (sum2 == 5)
{
System.out.println("8의 배수가 5번 입력되었으므로 종료합니다.");
break;
}
}
}
}
<#7 - 콘솔>
첫번째 문제
횟수를 입력하세요.
2
=======================
Blue
Blue
=======================
두번째 문제
100이하의 정수를 입력하세요~
25
입력한 숫자까지의 합325
세번째 문제
정수를 입력하세요.
4
입력된 숫자 :4
6
입력된 숫자 :6
8
입력된 숫자 :8
15
입력된 숫자 :15
16
입력된 숫자 :16
16
입력된 숫자 :16
16
입력된 숫자 :16
16
입력된 숫자 :16
8의 배수가 5번 입력되었으므로 종료합니다.
댓글
댓글 쓰기