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(조건식) {
실행코드
증감
}
=>
//초기화
int i=1; //for과의 차이점: 지역변수가 아니라 전역변수!
while (i<=5) {
//실행코드
System.out.println("아무거나");
//증감
i++;
}
i=10;
do {
System.out.println(i); //일단 10은 실행!되고 while문으로 간다
i++;
} while(i<5); // do while은 마지막에 ; 이 필요하다!
=> 1번은 일단 실행하고 while 조건식을 따진다!
int i=1;
while (i<=10) {
System.out.println(i);
if(i==7) {
break;
}
i++
}
=> 1 2 3 4 5 6 7 출력
=> break;는 참일때 반복문을 아예빠져나온다!
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부분만 더하는거지 ㅋㅎ
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++;
}
=> 이런식으로 들어가는 자리 생각하고 똑같이 구성해주면 된다..!!