9.19 4-1일 차 controlstatement 들어가기 ( if Statement )
1. 비트연산자
는 잘 안쓰기도 하고 내가 이해를 잘 못해서 패쓰
--------------------------연산자는 끝---------
controlstatement
1. if Statement01.
if문 기본형식
-조건식은 비교식이나 논리식이어야 한다. 즉 결과값이 true 아니면 false 나오는 식 이거나 직접 boolean 값을 줄 수있음
형식 : if(조건식) { => 만약 조건식이 참이라면
조건식이 참일 때 실행할 명령문;
} => 조건식이 참일 때 실행할 명령문이 하나이면 {}생략 가능
int num1 = 10;
1]결과값이 boolean값이 아닌 식은 조건식으로 불가 if(num1 % 2) { } if(num1) { }
2]조건식은 비교식 아니면 논리식 혹은 boolean 값( true,false)
if(num1 % 2 == 0){
system.out.printf( "%d는 짝수%n",num1);
}
if(num1 % 2 != 0){
system.out.printf( "%d는 홀수%n",num1);
}
if(num1 % 2 != 0 && num1 >= 10 ){
system.out.printf( "%d는 짝수고 10보다 크거나 같은 수이다%n",num1);
}
조건식이 참/거짓일때 수행할 명령문이 하나인 경우 { }생략 가능
if(true) System.out.println("항상 실행되는 명령문");
if(false) System.out.println("절대 실행안되는 명령문");
if(num1 % 2 != 0);
아래 블락{ }는 if문과 전혀 관련없이 실행된다. 즉 위의 IF문에 연결된 IF블락이 아니다
{
system.out.printf( "%d는 홀수%n",num1);
}
*** 수행할 명령문이 여러개인 경우 {}을 생략하면 의도하지 않은 결과를 초래할수 있다.
고로 조건식이 참일때 수행할 명령문이 여러 개인 경우 반드시 {}로 묶어라.
if(num1 % 2 != 0) {
System.out.printf("num1은 %d다%n",num1);
System.out.printf("%d는 홀수다%n",num1);
} => {}요게 있고 없고에 따라서 출력값이 달라짐!!
***** System.in.read()메소드 : 사용자 입력을 받을때까지 블락상태가 된다. 사용자가 값 입력해야 다음 코드가 실행 됨
입력한 문자의 아스키 코드값 반환. import를 해줘야해!
System.out.println("1. 하나의 문자를 입력하세요?");
int asciiCode = System.in.read();
System.out.println("사용자가 입력한 값(아스키 코드값):"+asciiCode);
System.out.println("사용자가 입력한 값(문자):"+(char)asciiCode);
사용자가 입력한 문자가 숫자인지 아닌지를 판단하자
1]아스키 코드값을 알때
boolean isNumber = asciiCode >=48 && asciiCode<=57;
if(isNumber) System.out.println("입력한 문자는 숫자다");
if(!isNumber) System.out.println("입력한 문자는 숫자가 아니다");
2]아스키 코드값을 모를때
boolean isNumber = asciiCode >='0' && asciiCode<='9';
if(isNumber) System.out.println("입력한 문자는 숫자다");
if(!isNumber) System.out.println("입력한 문자는 숫자가 아니다");
문]사용자가 입력한 문자가 알파벳이거나 숫자이면
"알파벳 혹은 숫자"라고 출력하고 아니면 "기타"라고 출력 하여라.
(아스키 코드값 모른다고 가정) else문 불가
참고로 영문 알파벳의 아스키 코드값은 대문자 A(65)~Z(90) ,소문자 a(97) ~z(122)
boolean isAlphabetOrNumber = asciiCode >= '0' && asciiCode <= '9' ||
asciiCode >='A' && asciiCode<='Z' ||
asciiCode >='a' && asciiCode<='z';
if(isAlphabetOrNumber) System.out.println("알파벳 혹은 숫자");
if(!isAlphabetOrNumber) System.out.println("기타");
-----------------------------------------이건 좀,,,, 모르겠음 걍 알아만둬-----------
System.out.println("2.하나의 문자를 입력하세요?");
char word = (char)System.in.read(); ---> \r읽고
System.out.println("입력한 문자:"+(int)word); --->13
word = (char)System.in.read(); --->\n을 읽는다
System.out.println("입력한 문자:"+(int)word); ----->10
엔터값 읽어서 미 사용
System.in.read(); --->\r읽고
System.in.read(); --->\n을 읽는다
혹은
System.in.skip(2);
char word = (char)System.in.read();
System.out.println("입력한 문자:"+word);
문]사용자가 입력한 값이 숫자인지 먼저 판단하고 숫자라면 2의 배수인지를 판단하여
2의 배수인 경우만 "2의 배수입니다"라고 출력하여라.
2의 배수가 아닌 경우 "2의 배수가 아니다"라고 출력
문자 '0'의 아스키 코드값:48
'1':49 '2':50......
boolean isNumber = word>='0' && word <='9';
boolean isMultiple = (word-'0') % 2 ==0;
방법1] if문 안의 if문으로 처리
if(isNumber) { //숫자인 경우
if(isMultiple) System.out.println("2의 배수입니다");
if(!isMultiple) System.out.println("2의 배수가 아니다");
}
방법2] 하나의 조건식안에서 논리 연산으로 처리
if(isNumber && isMultiple) System.out.println("2의 배수입니다");
if(isNumber && !isMultiple) System.out.println("2의 배수가 아니다");