int n, s;

n=s=0;

 

while (s<100) {

n++;

s+=n;

}

System.out.printf("n = %d, s = %d\n", n, s);

===============================================

do{

n++;

s+=n;

} while(s<100);

System.out.printf("n = %d, s = %d\n", n, s);

===============================================

 

복습

제어문

while문
-형식
while(조건식) {
실행문;
}

- 조건식의 결과는 반드시 true 또는 false (boolean이어야 한다.)
- 처음 조건식이 거짓이면 한번도 실행하지 않음 
- 조건식이 만족할 때 수행되는 실행문이 한 개인 경우에는 ({})생략 가능.
- while(true)와 같이 조건식을 true로 설정하면 무한 루프.
- while문 안에 또 다른 while문이나 다른 반복문 사용 가능.

입력받은 값이 

예를 들어 

100라면 3자리 정수이다.

10으로 3번 나눗셈을 하게되면

0.100 이것은 int에 저장하지 못해 0이 된다.

따라서 입력받은 값이 0이 아니면 계속 나누기 10을 해주고

나누기를 한번 해줄 때마다 n에 1을 더해준다.

 

합이 100이상이되는 최소의 수를 구하기 위해서 s<100

s<=100이면 100이상이 되는 두번째 수이다. 

최소의 수는 n으로 카운팅을 하고

합의 경우

홀수면 더하기 짝수면 빼기 이므로 

if (n%2==0) {

s+=-n;

} else {

s+=n;

}

으로 준다.

++

1부터 시작이고 2는 빼고 3는 더하고를 반복해야하므로. 

 

단을 입력 받아 해당 구구단 출력.

int dan, n;

System.out.print("원하는 단?");

dan=sc.nextInt();

n=0;

 

while( n<9 ) {

n++;

System.out.printf("%d * %d = %d, dan, n, dan*n);

}

 

 

 

5! 구하기 

 

10 ! = 10*9*7*6*5*4*3*2*1 을 의미한다.

 

int n, s, input;

 

System.put,print("양수 ? ");

input=sc.nextInt();

 

n=1;

s=0;

while(n<=input){

s+=n;

n+=2;

} System.out.println("결과 : " +s);

== 

while(n<=input){

n+=2;

s+=n;

} System.out.println("결과 : " +(s+1));

n 에 먼저 2를 해주게 되면 1의 값은 더하지 않고 3부터 입력한 수까지의 홀수를 더하므로 마지막에 (s+1)을 해줘야함.

 

 

밑에 주석은 처음 풀어보라고 했을 때 

적어 놨던 건데 while 뒤를이상하게 했음. 뭔 생각으로 저렇게했는지 감이안잡히는군..

n=s=0;
while(n++ <10) { // 10번 반복
s+=n; 
}

n을 먼저 사용한 후에 n+1 이므로 즉 0~9까지 10번

n=s=0;
while(++n < 10) { // 9번반복
s+=n;
}

n+1을 한 후에 그 값을 사용하므로 1~9까지 9번

n=s=0;
while(++n <= 10) { // 10번반복
s+=n;
}

n+1을 한 후에  1~10까지 10번

 

따라서 헷갈리는 경우가 많으므로 while 조건문에는 ++ 연산은 주의하자!

+ Recent posts