[21.07.07] while

yed·2021년 7월 7일
0

내가 무엇을 만들고 싶은지 목표가 생기면 공부할게 무엇인지 명확해진다👊


while문

while( 조건 ){ 본문; }

while은 앞에서 배운 for문과 같은 반복문입니다. 동작은 for문과 똑같아요. 조건이 true인 동안에 본문이 실행됩니다 그렇다면 while(true)로 작성하면 무한루프의 반복문이 탄생하겠네용

do-while문

do{ 본문; } while( 조건 )

무조건 본문을 한번 실행한 후 반복문의 조건에 따라 반복실행합니다.

[연습] while로 구구단 3단

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문에서의 초기식 역할을 하는 것! 잊지마세용

[문제] 예/출금 시스템 만들기

  1. 예금/출금/잔고/종료 메뉴를 구성
  2. 종료를 선택하기 전까진 시스템을 종료할 수 없음
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문은 참이 계속되면 무한 루프에 빠지게 되는데요 이를 활용해 메뉴를 구성할 수 있어요!

뭔가 좀 프로그램같이 콘솔창이 길게 출력되니깐 좀 개발자된것같고..🤭 아직 사막의 모래 한 알같은 수준이지만요ㅎ

CodeUp #1352

만약 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(); 
}

CodeUp #1353

만약 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();
}

CodeUp #1354

위 문제의 역삼각형 문제
만약 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로 바꾸는 방법도 아주 좋은 공부가 된다고 해요
해보고싶은 프로젝트가 있는데 혼자 처음부터 다 만들려고 하니깐 아직은 그런 수준은 아닌것같아 좌절한 주제가 있거든요.. 한번 다른 언어로 만들어진 코드를 보고 분석해볼까봐요

profile
6개월 국비과정 기록하기

0개의 댓글