day9

상은👸·2023년 9월 7일
0

뚜벅뚜벅 첫번째

목록 보기
8/26
post-thumbnail

연습문제

3번.
숫자를 하나 입력받아서 1부터 해당숫자까지 출력하세요.
ex) 입력 : 5
출력결과 -> 1 2 3 4 5

=>

Scanner scan = new Scanner(System.in);
System.out.print("숫자를 입력하세요 : ");
int num = scan.nextInt();

for (int i=1; i<=num; i++) {
	System.out.print(i + " ")
}

=> 먼저 입력받고

=> for문 들어가서 일단 1부터 쫘르륵 나와야하니까 int i=1; 로 잡고

=> 입력한 숫자 num까지 숫자가 출력 되야 하니까 i<=num; 으로 잡고

=> 1 2 3 4 5 이런식으로 출력 되야하니까 {} 안에 System.out.print();를 넣는다!

=> System.out.print(i + " ");
변하는 i값을 출력 해야하니까 i로 잡고

=> 가로로 값이 출력 : print
띄어쓰기 포함 : (+ " ")

while문

초기화
while(조건식) {
	실행코드
	증감
		}

=>

//초기화
int i=1; //for과의 차이점: 지역변수가 아니라 전역변수!
while (i<=5) {
	//실행코드
	System.out.println("아무거나");
	//증감
	i++;
}

do-while문

i=10;
do {
	System.out.println(i);  //일단 10은 실행!되고 while문으로 간다
	i++;
} while(i<5); // do while은 마지막에 ; 이 필요하다!

=> 1번은 일단 실행하고 while 조건식을 따진다!

break, continue문

1. break문

int i=1;
while (i<=10) {

	System.out.println(i);
    
    if(i==7) {
    break;
    }
    
    i++
}

=> 1 2 3 4 5 6 7 출력
=> break;는 참일때 반복문을 아예빠져나온다!

2. continue문

for (int i=1; i<=10; i++) {

	if (i == 8) {
    continue;
    }
	System.out.println(i);
}

=> 1~10까지 표시 -> 1 2 3 4 5 6 7 9 10
8빼고 표시!!

=> 8일때 continue; 걸려서 반복문 다음인 i++로 간다! 그래서 8은 출력안되고 i++로 가기때문에 9부터 다시 출력된다!

연습문제

continue + while문 1~10까지 출력해라 (8만 제외)

int i=0;
while (i<=9) {
	
    i++
	if (i==8) {
    continue
    }
	System.out.println(i);
    
}

=> 일일이 넣어보고 대입해보는 수 밖에 없을듯..!

=> 먼저 i=1; 이면 i++되버려서 2부터 출력되기때문에
i=0;으로 잡아줘서 1부터 출력되게 하고나서!

=> i가 7이 내려오면 i++되서 8이되고 continue; 걸리면 조건식으로 다시넘어간다!

=> i가 9이 내려오면 i++되서 10이 되고 출력도 10이 되겠죠?

=> 그래서 i가 10이 내려오면 안되는거지 그럼 11이 출력될테니까 그래서 9까지만 내려오게끔 i<=9로 범위를 잡아준다!

정리!

break
=> 조건식이 참일 경우, for, while {}를 아예 빠져나온다!

continue
① for => 조건식이 참일 경우, for(int i=1; i<=10; i++) 에서 i++부분으로 넘어간다

② while => 조건식이 참일 경우, continue를 만난순간부터 while (i<=10) 에서 i<=10부분으로 간다!

=> 조건식이 참일 경우, 반복문 다음으로 간다!

중첩 반복문

for (int i=1; i<=5; i++) { //1~5 5번
	for (int j=1; j<=3; j++) { //1~3 3번
	
    	System.out.printf("i:%d j:%d\n",i ,j);
	}
} 

=> i111 j123, i222 j123, i333 j123, i444 j123, i555 j123

연습문제

1~3까지의 합을 5번 더한 값은?

=>(1+2+3)+(1+2+3)+(1+2+3)+(1+2+3)+(1+2+3)

=>

sum = 0;
for (int i=1; i<=5; i++) {
	for (int j=1; j<=3; j++) {
    sum = sum + j 
	}
} 
System.out.println("총합 : " + sum);

=> sum = sum + j
123 + 123 + 123 + 123 + 123 = 30

※주의※
sum = sum + i 라면!!!!!!
111 + 222 + 333 + 444 + 555 = 45 가 나올거야!
i111 j123, i222 j123, i333 j123, i444 j123, i555 j123 이렇게 나오니까 i부분만 더하는거지 ㅋㅎ

중첩 반복문 for->while문 변환

int sum = 0;
	for (int i=1; i<=3; i++) {
		for (int j=1; j<=2; j++) {
			System.out.printf("i: %d j: %d\n",i, j);
// 나타나는 i와 j의 모든 값들의 합계를 구하기
			sum = sum + (i + j);
	}
}
System.out.println("총합 : " + sum);

=> while문으로 변환해보자!

sum=0;
int i=1;
while (i<=3) {
	int j=1;
	while (i<=2) {
    	System.out.printf("i: %d j: %d\n",i, j);
		sum = sum + (i + j);
        j++;
    }
    i++;
}
System.out.println("총합 : " + sum);

=> 각각 for문에 맞게 while 문을 짜는건데!

① for (int i=1; i<=3; i++)
->
int i=1;
while (i<=3) {
i++;
}

② for (int j=1; j<=2; j++) {
System.out.printf("i: %d j: %d\n",i, j);
sum = sum + (i + j);
}
->
int j=1;
while (i<=2) {
System.out.printf("i: %d j: %d\n",i, j);
sum = sum + (i + j);
j++;
}

=> 이런식으로 들어가는 자리 생각하고 똑같이 구성해주면 된다..!!

profile
뒤죽박죽 벨로그

0개의 댓글

관련 채용 정보