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 조건문에는 ++ 연산은 주의하자!

1~10까지 정수 출력

int n;

n=0;

 

while(n<10) {

n++;

System.out.print(n+"\t");

}

n이 0~9까지 10번이 실행됨.

System.out.println();

System.out.println(n);

 

9가 들어가면 n의 값은 10이된다.따라서 while이 false가 되므로 아예 실행하지 않기 때문에

마지막에 들어가는 10은 따로 출력한다. 

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0707_Ex04_while : 1~10까지의 합  (0) 2021.07.07
0707_Ex03_while :1~10까지 더한 값 구하기  (0) 2021.07.07
0707_이전시간 복습  (0) 2021.07.07
0707_Ex01_switch  (0) 2021.07.07
0706_Ex06_switch  (0) 2021.07.07

제어문
if 문
단순 if 문
if 다음의 조건이 참일 경우, 특정 문장을 수행하고자 할 때 사용되는 문장.
if(조건) {
문장1;
}

if(조건){
문장1;
} else {
문장2;

문장3;

다중 선택 if문(else if문)
if 문의 처음 조건식이 거짓일 경우 계속된 다른 범위의 값을 추출하기 위해 else 쪽에 if문을 두는 제어 구조
if(조건){
문장1;
} else if {
문장2;
} else {
 문장3;
}

switch ~ case문
정수와 관련된 자료형 byte, short, char, int, (long형 제외)만 사용할 수 있다.
case 다음의 값으로 변수나 수식을 불가능하며 리터널(상수)만 가능

switch(변수 또는 수식) {
case 상수 : 문장1; break;
case 상수 : 문장2; break;
case 상수 : 문장3; break;
default : 문장4; 
}

switch (n) {

case 3 : System.out.print("*");

case 2 : System.out.print("#");

case 1 : System.out.print("$");

default : System.out.print("입력오류"); 

}

입력받은 n 이 3이면 *#$를 출력

2이면 #$를 출력 

1이면 $를 출력

다른 값들은 입력오류 를 출력한다.

3이면 3, 2, 1을 실행

아니면 2인지확인하고 2이면 2, 1을 실행 ... 이런식으로 진행된다. 

 

switch (n) {

case 3 : System.out.print("*"); break;

case 2 : System.out.print("#"); break;

case 1 : System.out.print("$"); break;

default : System.out.print("입력오류"); break;

}

break;가 있으면 3이면 3만 실행.

string s;

if (n%2==0 && n%3==0) {

 s = "6의 배수";

} else if (n%2==0) {

s = "2의 배수";

} else if (n%3==0) {

s = "3의 배수";

} else {

s = "2또는 3의 배수가 아닙니다.";

}

 

위는 내가 이것저것 해보려고 시도해본 것들.

 

입력 받은 정수의 홀짝 구분.

if(n%2==1) {

s = "홀수";

}

System.out.println(n + " : " + s);

이면 컴파일 오류인데 s가 초기화 되어있지 않기 때문이다.

 s 의 초기값이 없기때문에 무엇이 있는지 모르고 실행되기에 컴파일 오류이다.

따라서 

s = "짝수"; 처럼 초기화시킨 후에

if 문을 써야함.

 

 

2로 나눴을 때 나머지가 1이면 홀수이다.

if(n%2==1) {

s = "홀수";

}

 

2로 나눈 나머지가 0이면 짝수이다. 그렇지 않으면 홀수임.

if(n%2==) {

s = "짝수";

} else {

s = "홀수";

}

System.out.println(n+ " : " + s);

 

왜 여기에서는 s의 값이 초기화 되지 않았는데 컴파일 오류가 아닌 것인가??

>첫 번째는 아닌 경우에는 값이 정해지지 않음.

  두 번째는 어쨌든 값이 정해짐. 

+ Recent posts