반응형

if-else if문

여러 개 중의 하나 - 여러 개의 조건식을 포함한 조건식

조건식 4개 중 참이 하나라도 발견 되면 빠져나온다.

int score  = 0;   // 점수를 저장하기 위한 변수
		char grade =' ';  // 학점을 저장하기 위한 변수. 공백으로 초기화한다.

		System.out.print("점수를 입력하세요.>");
		Scanner scanner = new Scanner(System.in);
		score = scanner.nextInt(); // 화면을 통해 입력받은 숫자를 score에 저장

		if (score >= 90) {         // score가 90점 보다 같거나 크면 A학점
			 grade = 'A';             
		} else if (score >=80) {   // score가 80점 보다 같거나 크면 B학점 
			 grade = 'B'; 
		} else if (score >=70) {   // score가 70점 보다 같거나 크면 C학점 
			 grade = 'C'; 
		} else {                   // 나머지는 D학점
			 grade = 'D'; 
		}
		System.out.println("당신의 학점은 "+ grade +"입니다.");

 

하단 else를 없애고 grade 변수에 D 값을 기본으로 넣어줘도 된다. (코드가 간결해짐)

		int score = 0; // 점수를 저장하기 위한 변수
		char grade = 'D'; // 학점을 저장하기 위한 변수. 공백으로 초기화한다.
		
		System.out.print("점수를 입력하세요.★");
		Scanner scanner = new Scanner(System.in);
		score = scanner.nextInt(); // 화면을 통해 입력받은 숫자를 score에 저장
		
		if (score >= 90) { // score가 90점 보다 같거나 크면 A학점
			grade = 'A';
		} else if(score >= 80) {
			grade = 'B';
		} else if(score >= 70) {
			grade = 'C';
		}

 

중첩 if문 - if문 안의 if (횟수 제약이 없다)

import java.security.cert.PKIXRevocationChecker.Option;
import java.util.Scanner;

class Ex4_5 {
	public static void main(String[] args) {
		int score = 0;
		char grade = ' ', opt = '0';

		System.out.print("점수를 입력해주세요.>");

		Scanner scanner = new Scanner(System.in);
		score = scanner.nextInt(); // 화면을 통해 입력받은 점수를 score에 저장

		System.out.printf("당신의 점수는 %d입니다.%n", score);

		if (score >= 90) {
			grade = 'A';
			if (score >= 98) {
				opt = '+';
			} else if (score < 94) {
				opt = '-';
			}
		} else if (score >= 80) {
			grade = 'B';
			if (score >= 88) {
				opt = '+';
			} else if (score < 84) {
				opt = '-';
			}
		} else if (score >= 70) {
			grade = 'C';
			if (score >= 78) {
				opt = '+';
			} else if (score < 74) {
				opt = '-';
			}
		} else {
			grade = 'D';
		}
		System.out.printf("당신의 학점은 %c%c입니다.%n", grade, opt);
	}
}

 

 

 


 

 

 

# Math.random() 메소드



-Math.random() 메소드는 0.0과 1.0 사이에 속하는 double 타입의 난수 하나를 리턴한다. 
 0.0은 범위에 포함되고 1.0은 포함되지 않는다. 이것을 비교 연산자로 표현하면 다음과 같다.


0.0 <= Math.random() < 1.0


# 1 ~10까지 정수 중에서 하나의 정수를 얻기 위해 어떤 과정이 필요한지 알아보자. 
-먼저 각변에 10을 곱하면 다음과 같은 범위에 속하는 하나의 double 타입의 값을 얻을 수 있다. (Math.random() 메소드로 1~10까지의 범위 구하기)


# Math.random()에 * 10

0.0*10 <= Math .random()*10  < 1.0*10


# double타입을 int로 타입변환

0.0*10 <= Math .random()*10  < 1.0*10
                0         0,1,2,3,4,5,6,7,8,9           10


# Math.random() 메소드로 1 ~ 10 까지의 범위를 구하기위해 +1을 더한다. 
0+1 <= (int)(Math .random()*10)+1  < 10+1
                 1              1,2,3,4,5,6,7,8,9,10            11    



이 원리를 이용하면 start부터 시작하는 n개의 정수 중에서 
임의의 정수 하나를 얻기 위한 연산식을 다음과 같이 만들 수 있다.

int num = (int) (Math.random () * n) + start(start <= Math.random() < n);

예를들어 주사위 번호 하나를뽑기 위해 다음 연산식을 사용할 수 있다.

int num = (int) (Math.random () * 6) + 1;

 

 

-주사위 굴리기에 대한 예제

// 1.0~6.999 > int 형변환 > 1~6
int num =(int) (Math.random() *6) +1; 


    if (num == 1) {
        System.out.println("1이 나왔습니다.");
    } else if (num == 2) {
        System.out.println("2가 나왔습니다.");
    } else if (num == 3) {
        System.out.println("3이 나왔습니다.");
    } else if (num == 4) {
        System.out.println("4가 나왔습니다.");
    } else if (num == 5) {
        System.out.println("5가 나왔습니다.");
    } else {
        System.out.println("6이 나왔습니다.");
    }

 

 

-컴파일러는 조건문을 읽고 나서 해석하지 않는다. (아래의 값은 b가 저장이 되어야 하는데, 컴파일 에러가 뜬다. 결론은, 위에서 변수를 만들 때 꼭 변수의 값을 0이라도 저장하자)

반응형

'java↗' 카테고리의 다른 글

java↗5-3. 임의의 정수 만들기  (0) 2024.03.15
java↗5-2. switch문  (0) 2024.03.15
java↗5. 조건문과 반복문  (0) 2024.03.15
java↗4-8. 조건 연산자, 대입 연산자  (1) 2024.03.15
java 기본 설정 세팅하기  (0) 2024.03.14