Programming Language/Java

if문과 for문으로 구구단 출력하기

Ma_Sand 2022. 2. 23. 21:25
반응형

1. 구구단의 n단을 입력하면 해당 구구단만 출력

public void multiple() {
    Scanner sc = new Scanner(System.in);   //구구단 단 수 입력받기
    
    System.out.println("구구단 단 수 입력: ");
    int num = sc.nextInt();    //단 수는 변수 num
    
    //1단부터 9단까지 출력
    //구구단은 1 * 1 = 1 형식으로 출력
    for(int i = 1; i < 10; i++) {   //i는 단수에 곱할 숫자의 변수
        System.out.println(num + " * " + i + " = "+ (num*i));
    }
}

▼실행결과

//3단 입력

구구단 단 수 입력: 
3
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27

 

 

 

2. 입력받은 숫자가 1에서 9 사이일 때에만 해당 구구단의 n단 출력

 조건문이 false일 땐 "잘못된 수를 입력하였습니다."를 출력

public void multiple() {
    Scanner sc = new Scanner(System.in);    //스캐너로 숫자 입력받기
    
    System.out.println("구구단 단 수 입력: \n(단, 1에서 9 사이의 값만 입력)");
    int num = sc.nextInt();    // num이라는 단 수의 변수 
    
    //입력값이 1에서 9 사이의 값일 때
    if((num > 0) && (num <= 9)) {
         for(int i = 1; i <= 9; i++) {
              System.out.printf("%d * %d = %d\n", num, i, (num*i));
         } else {   //if문의 조건식이 false일 때 
               System.out.println("잘못된 수를 입력하였습니다.");
         }
    }
}

▼실행결과

구구단 단 수 입력:
(단, 1에서 9 사이의 값만 입력)
4
4 * 1 = 4
4 * 2 = 8
4 * 3 = 12
4 * 4 = 16
4 * 5 = 20
4 * 6 = 24
4 * 7 = 28
4 * 8 = 32
4 * 9 = 36

1에서 9 사이의 값만 입력하라는 조건이 있으므로 if문을 사용한다.

'0 < num <= 9'라고 조건 걸어주면 좋겠지만 이렇게 하면 에러가 뜨기 때문에 각각 'num > 0' && 'num <= 9'라고 범위 설정을 해주어야 한다. 그리고 반복문인 for문을 이용하여 1에서 9까지 출력되도록 한다.

printf문을 이용해서 %d(정수)라는 서식 지정자를 통해 변수 num, i, (num*i)를 대신 입력하였다.

if문의 조건식이 true이면 for문 출력값인 구구단이 나오고, if문의 조건식이 false이면 else문의 출력값인 "잘못된 수를 입력하였습니다."가 나온다. 즉, 1에서 9 사이가 아닌 정수값을 입력하면 출력된다.

 

 

 

3. 1 이상의 두 개의 값을 입력 받아서 입력값을 포함한 그 사이의 숫자를 모두 출력하기

 -조건문이 false일 땐 "유효하지 않은 값입니다."를 출력

 -첫 번째 숫자와 두 번째 숫자는 어느 쪽이 크던 작던 상관하지 않는다. (한 쪽의 수가 무조건 커야 한다는 것 아님)

public void multiple() {
    Scanner sc = new Scanner(System.in);   //스캐너로 입력 받기
    
    System.out.println("첫 번째 숫자를 입력하시오. ");
    int num1 = sc.nextInt();   //첫 번째 숫자는 변수 num1로 받기
    
    System.out.println("두 번째 숫자를 입력하시오.");
    int num2 = sc.nextInt();   //두 번째 숫자는 변수 num2로 받기
    
    if(num1 > 0 && num2 > 0) {    //조건1: 두 숫자 모두 0보다 커야함(1 이상)
        //조건2: num1이 num2보다 클 때
        if(num1 > num2) {
            for(int i = num2; i <= num1; i++) {
                 System.out.println(i);
            } 
            
            } //조건3: num1이 num2보다 작을 때
              if(num1 < num2) {
                  for(int j = num1; j <= num2; j++) {
                       System.out.println(j);
                  }
              }
    } else {     //조건4: if문의 조건문이 false일 때
          System.out.println("유효하지 않은 값입니다.");
    }
}

▼실행결과

첫 번째 숫자 입력: 
2
두 번째 숫자 입력: 
7
2
3
4
5
6
7

 

ⓐ조건1: 정수 중에서 양수값만 받으므로 변수 num1과 num2를 각각 >0 처리한다.

 

 첫 번째 입력값이 3이고 두 번째 입력값이 9이든, 아니면 그 반대이든 상관없이 출력값이 나오게 하고 싶으면 

num1이 num2보다 클 경우와 num1이 num2보다 작을 경우에 나누어서 조건을 걸어야 한다. 

ⓑ조건2: 'num1 > num2'로 조건식을 적고, for문에서 변수 i는 num1보다 작은 값인 num2를 초기값으로 설정한다.

            그리고 조건문에 변수 i가 num1보다 작거나 같다고 설정하고, 증감식에는 변수 i를 후위연산으로 설정한다.

            왜냐하면 출력값이 초기값부터 나와야하기 때문이다.

ⓒ조건3: 조건2의 반대로 설정하면 된다. 증감식은 그대로. 대신 변수는 조건2의 변수와 같으면 안되기 때문에

            다른 변수인 j로 정한다.

 

ⓓ조건4: if문의 조건문이 false일 때 "유효하지 않은 값입니다."를 출력한다. 즉, 변수 num1, num2이 0보다 크지 않을

            때 false값이 출력된다.

반응형