4. 반복문
4.4 for문
반복적으로 실행해야하는 경우에 발생 for문을 사용하면 매우 조금 사용가능.
for(1초기화식; 2조건식; 3증강식){실행문} 조건이 true일경우 실행 조건식이 false경우 종료하고 정상흐름
for (int i = 1; i <=10; i++)
{
System.out.print(i + " ");
}
for문안에 초기화식이 두개거나 증감식이 둘이상이 있을수 있다. 이런경우에는 , 로 구분한다.
for(int i=0, j=100; i<=50 && j>=50; i++ , j--){}
for문 밖에서도 초기화식 변수를 사용하고 싶다면 밖에서 선언해야한다.
int sum = 0;
int i;
for (i =1; i<=100; i++)
{
sum += i;
}
System.out.println("1~" + (i-1) + "합: " + sum);
for문 에서 주의해야할점은 초기화식에서 부동 소수점을 쓰는 float타입을 사욯자ㅣ 말아야한다.
부동소수점 방식의 float타입은 연산과정에서 정확히 0.1을 표현하지 못하기때문에 증감식에서x에 더해지는 실제값이 0.1 보다 약간 클수 있어서 제대로 풀리지않음.
for문은 또 다른 for문을 포함할 수 있는데 이것을 중첩된 for문이라고 한다.
이 경우 바깥의 for문이 한번실행할때마다 중첩ㄷ된 for문은 횟숨나큼 반복하고 다시 바깥for문으로 돌아간다.
//구구단
for (int i = 2; i<=9; i++)
{
System.out.println("***" + i + "단" + "***");
for(int j = 1; j <=9; j++)
{
System.out.println(i + "*" + j + "=" + (i * j) );
}
4.5 while문
for문이 정해진횟수만큼 반복이라면 while문은 조건식이 true일 경우 계속해서 반복하고 false면 종료
while(1.조건식) {실행문)
int i =1;
while (i <= 10)
{
System.out.print( i + " ");
i++;
}
int sum = 0;
int i = 1;
while (i <= 100)
{
sum += i;
i++;
}
System.out.print("1~" + (i-1) + "합: " + sum);
만약 조건식에 true를 넣으면 while(true)가 되면 무한반복함. 이 경우 언젠간 while을 빠져나가기 위한 코드가 필요하다.
Scanner scanner = new Scanner(System.in);
boolean run = true;
int speed = 0;
while(run)
{
System.out.println("-------------------");
System.out.println("1. 증속 | 2. 감속 | 3. 중지-");
System.out.println("-------------------");
System.out.print("선택: ");
String strNum = scanner.nextLine();
if(strNum.equals("1"))
{
speed++;
System.out.println("현재 속도 = " + speed );
}
else if (strNum.equals("2"))
{
speed--;
System.out.println("현재 속도 = " + speed );
}
else if(strNum.equals("3"))
{
run = false;
}
}
System.out.println("프로그램 종료");

4.6 do-while문
do{실행문} while{조건식}
while문과 동일하지만 블록내부를 실행시키고 실행겨롹에 따라 반복실행할지 결정하는 경우가 있음. 선실행후 조건검사임.
System.out.println("메시지를 입력하세요.");
System.out.println("프로그램을 종료하려면 q를 입력하세요.");
Scanner sc = new Scanner(System.in);
String inputString;
do
{
System.out.print(">");
inputString = sc.nextLine();
System.out.println(inputString);
} while (! inputString.equals("q")); //입력된 내용이 q가 아니라면 계속반복 while뒤에 ; 꼭 찍어주기
System.out.println();
System.out.println("프로그램 종료.");
4.7 break문
반복문을 종료할때 사용된다.
while(true)
{
int num = (int) (Math.random()*6) + 1;
System.out.println(num);
if(num==6)
{
break;
}
}
System.out.println("프로그램 종료");
만약 반복문이 중첩되어있을경우 break문은 가장 가까운 반복문만 종료하고 바깥쪽 반복문은 종료시키지 앟는다.
중첩된 반복문에서 바깥쪽 반복문까지 종료시키려면 바깥쪽 반복문에 이름을 붙이고 break 이름; 을 사용하면된다.
Outter: for (char upper = 'A'; upper <='Z'; upper++)
{
for (char lower = 'a'; lower <= 'z'; lower++)
{
System.out.println(upper + "-" + lower);
if (lower == 'g')
{
break Outter;
}
}
}
System.out.println("프로그램 실행 종료");
4.8 continue 문
반복문에서만 사용 continue문이 실행되면 for 문의 증감식 또는 while문 dowhile문의 조건식으로 바로 이동한다.
반복문을 종료하지 않고 계속 반복을 수행한다는점이 break와 차이점이 있다.
특정 조건을 만족하는 경우 continue문을 실행해서 그 이후 문장르 실행하지 않고 다음 반복으로 넘어간다
for (int i = 1 ; i <=10 ; i++ )
{
if (i % 2 != 0)
{
continue;
}
System.out.print(i + " ");
}
4.9 확인문제
1~100까지 정수 중 3의 배수의 총합을 출력하는 코드
int sum = 0;
for (int i= 1; i <= 100; i++)
{
if (i %3 == 0)
{
sum += i;
}
}
System.out.print("3의 배수의 합:" + sum);
while문과 Manth.random()을 사용하여 주사위 두개를 던지고 주사위 합이 5면 실행을 멈추고 아니면(숫자1,숫자2)로 표현하기
while (true)
{
int num1 = (int) (Math.random() * 6) + 1;
int num2 = (int) (Math.random() * 6) + 1;
System.out.println("(" + num1 + "," + num2 + ")");
if ((num1 + num2) == 5)
{
break;
}
}
중첩 for문을 활용 4x + 5y = 60의 모든 해를 구해서 (x,y)의 형태로 출력하기 단, x와 y는 10이하의 자연수
for (int x = 1 ; x<=10; x++)
{
for (int y = 1 ; y<=10; y++)
{
if (((4*x) + (5*y))== 60)
{
System.out.println("(" + x + ","+ y + ")");
}
}
}
for문을 활용하여 별찍기
for (int i = 1 ; i <= 5; i++)
{
for (int j = 1 ; j <= i; j++)
{
System.out.print("*");
if (i == j)
{
System.out.println(); //i == j가 같아지면 행나눔
}
}
}
우측에 쏠리게 별찍기
for (int i = 1 ; i <= 5; i++)
{
for (int j = i + 1 ; j <= 5; j++)
{
System.out.print(" ");
}
for (int k = 1 ; k <= i; k++)
{
System.out.print("*");
if (i == k)
{
System.out.println();
}
}
}
while문과 scanner의 nextLine()메소드를 이용해서 예금 출금 조회 종료 기능이 있는 코드
Scanner sc = new Scanner(System.in);
int money = 0;
boolean run = true;
while (run)
{
System.out.println("-----------------------------");
System.out.println("1.예금 | 2.출금 | 3.잔고 | 4. 종료");
System.out.println("-----------------------------");
System.out.print("선택> ");
String num = sc.nextLine();
if(num.equals("1"))
{
System.out.print("예금액>");
money += sc.nextInt();
sc.nextLine();
}
else if(num.equals("2"))
{
System.out.print("출금액>");
money -= sc.nextInt();
sc.nextLine();
}
else if(num.equals("3"))
{
System.out.print("잔고>");
System.out.println(money);
}
else if(num.equals("4"))
{
System.out.print("프로그램 종료");
run = false;
}
}
2022.11.15 리뷰
c언어 기반이기에 어느정도 아는 부분까지 빨리 달리고 있다.
이것이 자바다 책으로 진도를 나가고 있다.
책으로 공부하니 많이 배운거 같지 않은데 뭔가 시간이 매우 빨리 지나가고 있고 힘들다.
역시나 중요한 것은 꺾이지 않는 마음
'기초단계 > JAVA' 카테고리의 다른 글
| 2022.11.16-2 JAVA 참조타입 2 (0) | 2022.11.16 |
|---|---|
| 2022.11.16-1 JAVA 참조타입 (0) | 2022.11.16 |
| 2022.11.15-2 JAVA 조건문 (0) | 2022.11.15 |
| 2022.11.15-1 JAVA 연산자 (0) | 2022.11.15 |
| 2022.11.14-3 JAVA 변수와 타입 2 (0) | 2022.11.14 |