개발자 준비과정/JAVA
[JAVA] 조건문 : if, switch
하늘바람a
2024. 3. 1. 16:07
// if문 if(조건식){조건식이 true}조건식이 false
// 조건식에는 연산식(true,false 값 산출 가능)이나 boolean변수가 올 수 있다.
// if(조건식1){} else if(조건식2){} else{}
// 중첩if문 단계는 제한이 없다. if(조건식1){ if(조건식2){} else{} }else{}
// Math.random() 메소드 : 0.0<= ~ < 1.0 사이의 double 타입 난수 리턴
// 0.0<=Math.random() <1.0
// 0.0*6 <=Math.random()*6 < 1.0*6 // 모든변에 6을 곱하면 0<= ~ < 6사이의 double 타입 난수 리턴
// (int)0.0 <= ((int)Math.random()*6) < (int)6.0 // 0<= ~ < 6 사이의 정수 리턴 -> 0,1,2,3,4,5
// (0)+1 <= ((int)Math.random()*6)+1 < (6)+1 // 1<= ~ <7 사이의 정수 리턴 -> 1,2,3,4,5,6
// 주의점 : 괄호 위치
// (int)Math.random()*6 -> 항상 0이 된다. 이유 : Math.random()이 0.0<= ~ < 1.0 이므로 이 값에 int 강제형변환을 하면 0이 된다.
// 그러므로 0<= ~ < 6 값을 갖고 싶으면 ((int)Math.random()*6) 으로 써야 한다.
// start부터 시작하는 n개의 정수 중에서 하나의 정수를 얻기 위한 코드
// ((int)Math.random()*n)+start;
// 1~45 사이의 로또 번호 뽑기
// ((int)Math.random()*45) +1;
// if문의 조건식의 결과 -> true, false
// switch문 조건식의 결과 -> 변수의 값
// swtich(변수){case 값1: break; case 값2: break; default: }
// switch문은 변수의 값이 조건식의 결과이므로 조건식이 나올 수 없고 boolean 안되고 범위 지정 안된다.
// 변수값과 동일한 값을 갖는 case가 없으면 default로 가서 실행문 실행.
// default가 필요 없다면 생략 가능
// break; 다음 case를 실행하지 않고 switch문을 빠져나가기 위해 필요하다.
// 만약 다음 break가 없다면 case 값에 상관없이 case가 연달아 실행된다.
// switch(변수) 에서 괄호안의 타입은 정수타입(byte,char,short,int), 문자열 타입(String) 을 사용할 수 있다.
// Switch Expressions
// 자바12 이후부터 가능. break문 없애고 화살표와 중괄호 사용
// switch(변수){case 값1, 값2 -> 실행문; case 값3 -> 실행문; default -> 실행문;}
// 스위치된 값을 변수에 바로 대입 가능.
// 단일 값 -> 화살표 오른쪽에 값 기술.
// 중괄호 사용 -> yield 타입 변수값을 지정. 이 경우 default 항상 존재해야한다. // int score=switch(grade){case 'A' -> 100; case 'B' -> {System.out.println("B입니다"); yield 80;} default -> 60;};
// yield는 마지막에 출력된다.
// 타입 변수 = switch(변수){case 값1 -> 변수값; case 값2 -> 변수값; case 값3 -> {실행문; yield 변수값;} default -> 변수값; };
boolean a = true;
while(a) {
Scanner scanner = new Scanner(System.in);
String grade = scanner.next();
int score = switch (grade) {
case "A", "a" -> 100;
case "B", "b" -> {
System.out.println("B입니다");
yield 80;
}
default -> {
a=false; yield 60;}
};
System.out.println(score);
}