내가 무엇을 만들고 싶은지 목표가 생기면 공부할게 무엇인지 명확해진다👊
while( 조건 ){ 본문; }
while은 앞에서 배운 for문과 같은 반복문입니다. 동작은 for문과 똑같아요. 조건이 true인 동안에 본문이 실행됩니다 그렇다면 while(true)로 작성하면 무한루프의 반복문이 탄생하겠네용
do{ 본문; } while( 조건 )
무조건 본문을 한번 실행한 후 반복문의 조건에 따라 반복실행합니다.
int i=1;
while(i<=9) {
System.out.println(3+"*"+i+"="+3*i);
i++;
}
이걸 응용해서 2단부터 9단을 만들어봅시다. for문으로는 해봤는데 while문으로는 처음해보는것같아요
2x1=2 3x1=3 ...
2x2=4 3x2=6 ...
.
.
.
= 각 n단에서 1~9가 반복된다면 n 안에 1~9가 포함되는 중첩 반복문
int i=2, j=1;
while(i<=9) {
System.out.println(i+"단");
while(j<=9) {
System.out.println(i+"*"+j+"="+i*j);
j++;
}
i++;
j=1; // point!
}
처음에 중첩while문을 완성하고 컴파일했더니 2단만 출력되더라구요 몇번을 봐도 코드에서 잘못된 건 없어보였는데?..!
알고보니 2단 실행 후 j값이 9가 되면서 안쪽의 while문의 실행 조건을 만족하지 못했던 겁니다..! 첫번째 while문에서 j값을 초기화해주는 것이 for문에서의 초기식 역할을 하는 것! 잊지마세용
- 예금/출금/잔고/종료 메뉴를 구성
- 종료를 선택하기 전까진 시스템을 종료할 수 없음
Scanner sc=new Scanner(System.in);
int balance=0; //잔고
boolean run=true; //while문 반복여부 저장
while(run) {//무한 루프
System.out.println("------------------------------------");
System.out.println(" 1. 예금 | 2.출금 | 3. 잔고 | 4.종료");
System.out.println("------------------------------------");
System.out.print("선택>");
int choice=sc.nextInt();//메뉴선택
switch(choice) {
case 1:
System.out.println("예금액 입력>");
int in=sc.nextInt();
balance+=in;
break;
case 2:
System.out.println("출금액 입력>");
int out=sc.nextInt();
if(balance<out) {
System.out.println("잔고가 부족합니다");
}else {
balance-=out;
}
break;
case 3:
System.out.println("잔고 : "+balance);
break;
case 4:
System.out.print("종료합니다");
run=false;
break;
default :
System.out.println("잘못된 선택");
break;
}
}
sc.close();
위에서도 언급했듯이 while문은 참이 계속되면 무한 루프에 빠지게 되는데요 이를 활용해 메뉴를 구성할 수 있어요!
만약 3이 입력된다면
1층 123
2층 123
3층 123
= (1~n)층 (1~n)개의 *이 들어가는 직사각형 만들기
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
sc.close();
for(int i=1; i<=num;i++) {
for(int j=1; j<=num;j++) {
System.out.print("*");
}
System.out.println();
}
만약 3이 입력된다면
1층 1
2층 12
3층 123
= (1~n)층 (1~n층)개의 *로 삼각형 만들기
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
sc.close();
for(int i=1; i<=num;i++) {
for(int j=1; j<=i;j++) {
System.out.print("*");
}
System.out.println();
}
위 문제의 역삼각형 문제
만약 3이 입력된다면
1층 123
2층 12
3층 1
= (1~n)층 (n층~1)개의 *이 출력됨
for(int i=1; i<=num; i++) {
for(int j=num; j>=i; j--) {
System.out.print("*");
}
System.out.println();
}
다른언어로 만들어진 프로그램코드를 보고 java로 바꾸는 방법도 아주 좋은 공부가 된다고 해요
해보고싶은 프로젝트가 있는데 혼자 처음부터 다 만들려고 하니깐 아직은 그런 수준은 아닌것같아 좌절한 주제가 있거든요.. 한번 다른 언어로 만들어진 코드를 보고 분석해볼까봐요