it공부/Java

for while 반복문 예제

콩쨈 2020. 7. 5. 21:05
반응형

	        if(x==0) System.out.println("x==0"); 
	        if(x!=0) System.out.println("x!=0");    // !0 = 1
	        if(!(x==0)) System.out.println("!(x==0)");  //!(TRUE) = FALSE
	        if(!(x!=0)) System.out.println("!(x!=0)");  //!(FALSE) = TRUE(1)
	        System.out.println();
	 
	        x = 1;
	        System.out.printf("x=%d 일 때 참인 것은%n", x);
	        if(x==0) System.out.println("x==0");
	        if(x!=0) System.out.println("x!=0");
	        if(!(x==0)) System.out.println("!(x==0)");
	        if(!(x!=0)) System.out.println("!(x!=0)");
	    }
	}

// 4_2 FlowEx2.java
// if문 - 조건 처리
// Integer.parseInt(문자열) : 문자열>integer

import java.util.Scanner;
 
public class FlowEx2 {
    public static void main(String[] args) {
        int input;
 
        System.out.println("숫자를 하나 입력하세요.>");
 
        Scanner scanner = new Scanner(System.in);
        String tmp = scanner.nextLine(); // 화면으로 입력받은 내용 tmp에 저장
        input = Integer.parseInt(tmp);   // 입력받은 문자열 int로 변환
        
        if(input==0) {
            System.out.println("입력하신 숫자는 0입니다");
        }
        if(input!=0)
            System.out.println("입력하신 숫자는 0이 아닙니다");
            System.out.printf("입력하신 숫자는 %d입니다", input); // if 문에 포함 안됨
        
    }
}

// 4_3 FlowEx3.java
// if문 - 조건 판별

import java.util.Scanner;
 
public class FlowEx3 {
    public static void main(String[] args) {
        int input;
 
        System.out.println("숫자를 하나 입력하세요.>");
 
        Scanner scanner = new Scanner(System.in);
        String tmp = scanner.nextLine();
        input = Integer.parseInt(tmp);
 
        if(input==0) {
            System.out.println("입력하신 숫자는 0입니다.");
        } else {
            System.out.println("입력하신 숫자는 0이 아닙니다.");
        }
    }
}

// 4_4 FlowEx4.java
// 성적에 따른 학점 출력

 import java.util.Scanner;
 
public class FlowEx4 {
    public static void main(String[] args) {
        int score = 0;  // 점수를 저장하기 위한 변수
        char grade = ' '; // 학점을 저장하기 위한 변수. 공백 초기화.
 
        System.out.print("점수를 입력하세요.>");
        Scanner scanner = new Scanner(System.in);
        String tmp = scanner.nextLine();
        score = Integer.parseInt(tmp);
 
        if(score >= 90) {
            grade = 'A';
        } else if(score >= 80) {
            grade = 'B';
        } else if(score >= 70) {
            grade = 'C';
        } else {
            grade = 'D';
        }
        System.out.println("당신의 학점은 " + grade + " 입니다.");
    }
}


// 4_5 FlowEx5.java
// 중첩 if문 - 성적에 따른 학점 출력 (+,-포함)
 

import java.util.Scanner;
 
public class FlowEx5 {
    public static void main(String[] args) {
        int score = 0;
        char grade = ' ';
        char opt = '0';
 
        System.out.print("점수를 입력해주세요>");
 
        Scanner scanner = new Scanner(System.in);
        String tmp = scanner.nextLine();
        score = Integer.parseInt(tmp);
 
        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 {
            grade = 'C';
        }
        System.out.printf("나머지 학점은 %c%c입니다.%n", grade, opt);
    }
}


// 2_6 FlowEx6.java
// switch문 - 월에 따라 계절 파악하기

 import java.util.Scanner;
 
public class FlowEx6 {
    public static void main(String[] args) {
        int month = 0;
 
        System.out.print("현재 월을 입력하세요.>");
 
        Scanner scanner = new Scanner(System.in);
        String tmp = scanner.nextLine();
        month = Integer.parseInt(tmp);
 
 
        switch(month) {
            case 12:case 1:case 2:
                System.out.println("현재 계절은 겨울 입니다");
                break;
            case 3:
            case 4:
            case 5:
                System.out.println("현재 계절은 봄 입니다.");
                break;
 
            case 6:case 7:case 8:
                System.out.println("현재 계절은 여름 입니다.");
                break;
 
            case 9:case 10:case 11:
                System.out.println("현재 계절은 가을 입니다");
                break;
 
            default:
                System.out.println("잘못 입력하셨습니다.");
 
        }
    }
}

 4_7 FlowEx7.java
// switch문 - 가위 바위 보 (random 함수 이용)
// (int)(Math.random()*개수) + 시작하는 수

import java.util.Scanner;
 
public class FlowEx7 {
    public static void main(String[] args) {
        int user, com;
 
        System.out.print("가위(1), 바위(2), 보(3) 중 하나를 입력하세요.>");
 
        Scanner scanner = new Scanner(System.in);
        String tmp = scanner.nextLine();    // 화면을 통해 입력받은 내용을 tmp에 저장
        user = Integer.parseInt(tmp);
 
        com = (int)(Math.random()*3) + 1; //1 부터 "3"개의 숫자를 랜덤으로
 
        System.out.println("당신은 " + user + "입니다.");
        System.out.println("컴은  " + com + "입니다.");
        
        
        switch(user - com) {    // user - com을 하므로써 case를 5가지로 줄일 수 있다.
            case 2:case -1:
                System.out.println("당신이 졌습니다");
                break;
            case 1:case -2:
                System.out.println("당신이 이겼습니다.");
                break;
            case 0:
                System.out.println("비겼습니다.");
                break;
        }
    }
}

4_8 FlowEx8.java
// switch문 - 주민등록번호를 입력받아서 성별 출력
// .charAt(배열번호)  입력받은 문자열[번호]의 문자를 떼올때.
 

import java.util.Scanner;
 
public class FlowEx8 {
    public static void main(String[] args) {
        char gender;
        String regNo = "";
 
        System.out.print("당신의 주민번호를 입력하세요.(011231-1111222)>");
 
        Scanner scanner = new Scanner(System.in);
        regNo = scanner.nextLine();
 
        gender = regNo.charAt(7); // 입력받은 번호의 8번째 문자를 gender에 저장.
 
        switch(gender) {
            case '1' :
            case '3' :
                System.out.println("당신은 남자 입니다.");
                break;
            case '2':case '4':
                System.out.println("당신은 여자 입니다.");
                break;
            default:
                System.out.println("유효하지 않은 주민등록번호입니다.");
        }
    }
}

// 4_9 FlowEx9.java
// 성적에 따른 학점 출력

import java.util.Scanner;
 
public class FlowEx9 {
    public static void main(String[] args) {
        int score = 0;
        char grade = ' ';
 
        System.out.print("당신의 점수를 입력하세요(1~100)>");
 
        Scanner scanner = new Scanner(System.in);
        String tmp = scanner.nextLine();
        score = Integer.parseInt(tmp);
 
        switch(score) {
            case 100:case 99:case 98:case 97:case 96:
            case 95:case 94:case 93:case 92:case 91:
            case 90:
                grade = 'A';
                break;
            case 89:case 88:case 87:case 86:case 85:
            case 84:case 83:case 82:case 81:case 80:
                grade = 'B';
                break;
            case 79:case 78:case 77:case 76:case 75:
            case 74:case 73:case 72:case 71:case 70:
                grade = 'C';
                break;
            default:
                grade = 'F';
        }
 
        System.out.println("당신의 학점은 " + grade + " 입니다.");
    }
}

// 4_10.java
// 성적에 따른 학점 출력
// 나누기 연산을 이용해서 조금 더 간편하게 함
 

import java.util.Scanner;
 
public class FlowEx10 {
    public static void main(String[] args) {
        int score = 0;
        char grade = ' ';
 
        System.out.print("당신의 점수를 입력하세요. (1~100)>");
 
        Scanner scanner = new Scanner(System.in);
        String tmp = scanner.nextLine();
        score = Integer.parseInt(tmp);
 
        switch(score/10) {
            case 10:case 9:
                grade = 'A';
                break;
            case 8:
                grade = 'B';
                break;
            case 7:
                grade = 'C';
                break;
            default:
                grade = 'F';
        }
        System.out.println("당신의 학점은 "+grade+" 입니다.");
    }
}

// 4_11 FlowEx11.java
// 중첩 switch문 - 주민등록번호를 입력받아서 성별 출력

import java.util.InputMismatchException;
import java.util.Scanner;
 
public class FlowEx11 {
    public static void main(String[] args) {
        char gender;
        String regNo = "";
        System.out.print("당신의 주민등록번호를 입력하세요.(011231-1111222)>");
 
        Scanner scanner = new Scanner(System.in);
        regNo = scanner.nextLine();
 
        gender = regNo.charAt(7);   // 입력받은 문자 regNo에서 8번째문자를 gender에 저장
 
        switch(gender) {
            case '1':
            case '3':
                switch(gender) {
                    case '1':
                        System.out.println("당신은 2000년 이전에 출생한 남자 입니다");
                        break;
                    case '3':
                        System.out.println("당신은 2000년 이후에 출생한 남자 입니다");
                        // break; 안써줘도 문제 없음.
                }
                break;  // 그러나 여기에 break문을 안써주면 빠져나오지 않는다.
            case '2':
            case '4':
                switch(gender) {
                    case '2':
                        System.out.println("당신은 2000년 이전에 출생한 여자 입니다");
                        break;
                    case '4':
                        System.out.println("당신은 2000sus 이후에 출생한 여자 입니다");
                        break;
                }
                break;
            default:
                System.out.println("유효하지 않은 주민등록번호입니다");
        }
    }
}

// 4_12 FlowEx12.java
// for문 - 가로, 세로 출력하기

public class FlowEx12 {
    public static void main(String[] args) {
        for(int i=1;i<=5;i++)
            System.out.println(i); // 개행 함
 
        for(int i=1;i<=5;i++)
            System.out.print(i); // 개행 안함
 
        System.out.println();
    }
}

// 4_13 FlowEx13.java

// for문 - 누적 합

public class FlowEx13 {
    public static void main(String[] args) {
        int sum=0;
 
        for(int i=0;i<=10;i++) {
            sum += i;
            System.out.printf("1부터 %2d 까지의 합: %2d%n", i, sum);
        }
    }
}

// 4_14 FlowEx14.java
// for문 - 역순 출력
 

public class FlowEx14 {
    public static void main(String[] args) {
        for(int i=0, j=10; i<=10;i++,j--)
            System.out.printf("%d \t %d%n", i, j);
    }
}

// 4_15 FlowEx15.java
// 짝수 홀수 제곱 역수 순환 반복
 

public class FlowEx15 {
    public static void main(String[] args) {
        System.out.println("i \t 2*i \t2*i-1 \t i*i \t 11-i \t i%3 \ti/3");
        System.out.println("-----------------------------------------------");
 
        for(int i=1;i<=10;i++)
            System.out.printf("%2d \t %2d \t %2d \t %3d \t %2d \t %d \t\t %d%n", i, 2*i, 2*i-1, i*i, 11-i, i%3, i/3);
    }
}

// 4_16 FlowEx16.java
// 5X10 별찍기
 

public class FlowEx16 {
    public static void main(String[] args) {
        for(int i=1;i<=5;i++) {
            for(int j=1;j<10;j++)
                System.out.print("*");
            System.out.println();
        }
    }
}

// 4_17 FlowEx17.java
// 점점 늘어나는 별찍기
 

import java.util.Scanner;
 
public class FlowEx17 {
    public static void main(String[] args) {
 
        int num=0;
 
        System.out.print("*을 출력할 라인의 수를 입력하세요.> ");
 
        Scanner scanner = new Scanner(System.in);
        String tmp = scanner.nextLine();
        num = Integer.parseInt(tmp);
 
        for(int i=1;i<=num;i++) {
            for(int j=1; j<=i;j++)
                System.out.print("*");
            System.out.println();
        }
 
    }
}

// 4_18 FlowEx18
// 구구단

public class FlowEx18 {
    public static void main(String[] args) {
        for(int i=2;i<=9;i++) {
            for(int j=1;j<=9;j++) {
                System.out.printf("%d X %d = %d%n", i, j, i*j);
            }
        }
    }
}

// 4_19 FlowEx.java
// 반복문 한눈에 보기
 

public class FlowEx19 {
    public static void main(String[] args) {
        for(int i=1;i<=3;i++)
            for(int j=1;j<=3;j++)
                for(int k=1;k<=3;k++)
                    System.out.println(""+i+j+k); //세글자씩 출력하려면 string처럼 출력해야하므로 빈문자열 ""를 추가해야한다.
    }
}

// 4_20 FlowEx20.java
// 좌표 찍기
 

public class FlowEx20 {
    public static void main(String[] args) {
        for(int i=0;i<=5;i++) {
            for(int j=1;j<=5;j++) {
                System.out.printf("[%d,%d]", i, j);
            }
            System.out.println();
        }
    }
}

// 4_21 FlowEx21.java
// 대각선 좌표 찍기
 

public class FlowEx21 {
    public static void main(String[] args) {
        for(int i=1;i<=5;i++) {
            for (int j = 1; j <= 5; j++) {
                if (i == j) {
                    System.out.printf("[%d,%d]", i, j);
                } else {
                    System.out.printf("%5c", ' ');
                }
            }
            System.out.println();
        }
    }
}

// 4_22 FlowEx22.java
// 점수와 합
// arr의 길이를 구할때는   arr.length
 

public class FlowEx22 {
    public static void main(String[] args) {
        int [] arr = {10, 20, 30, 40, 50};
        int sum = 0;
        for(int i=0;i<arr.length;i++) { //arr의 길이를 arr.length로 받아 올 수 있음
            System.out.printf("%d ", arr[i]);
        }
        System.out.println();
 
        for(int tmp: arr) { // JDK 1.5부터 새로운 문법 적용 가능..
            System.out.printf("%d ", tmp);
            sum += tmp;
        }
        System.out.println();
        System.out.println("sum="+sum);
    }
}

// 4_23 FlowEx23.java
// 반복 출력
 

public class FlowEx23 {
    public static void main(String[] args) {
        int i=5;
 
        while(i--!=0) {
            System.out.println(i+ " - I can do it.");
        }
    }
}

// 4_24 FlowEx24.java
// 카운트 다운
 

public class FlowEx24 {
    public static void main(String[] args) {
        int i=11;
 
        System.out.println("자, 이제 카운트 다운을 시작합니다.");
 
        while(i--!=0) { //while(i--)만 하면 오류남..
            System.out.println(i);
            for(int j=0;j<2_000_000_000;j++);
        }
        System.out.println("GAME OVER");
    }
}
 

// 4_25 FlowEx25.java
// 누적 합
 

import java.util.Scanner;
 
public class FlowEx25 {
    public static void main(String[] args) {
        int num = 0;
        int sum = 0;
 
        System.out.print("숫자를 입력하세요.(예:12345)>");
        Scanner scanner = new Scanner(System.in);
        String tmp = scanner.nextLine();
        num = Integer.parseInt(tmp);
 
        while(num!=0) {
            // num을 10으로 나눈 나머지를 sum에 더함
            sum += num%10;
            System.out.printf("sum=%3d num=%d%n", sum, num);
 
            num /= 10;
        }
        System.out.println("각 자리수의 합:" + sum);
    }
}

// 4_26 FlowEx26.java
// 누적 합
 

public class FlowEx26 {
    public static void main(String[] args) {
        int sum = 0;
        int i   = 0;
 
        while((sum += ++i) <= 100) {
            System.out.printf("i=%d sum=%d%n", i, sum);
        }
    }
}

// 4_27 FlowEx27.java
// 입력값의 합 출력
 

import java.util.Scanner;
 
public class FlowEx27 {
    public static void main(String[] args) {
        int num;
        int sum = 0;
        boolean flag = true;    //while문의 조건식으로 사용될 변수
 
        System.out.println("합계를 구할 숫자를 입력하세요.(끝내려면 0을 입력)");
 
        while(flag) {
            System.out.print(">>");
 
            Scanner scanner = new Scanner(System.in);
            String tmp = scanner.nextLine();
            num = Integer.parseInt(tmp);
 
            if(num!=0) {
                sum += num;     // num이 0이 아니면, sum에 더한다
            } else {
                flag = false;   // num이 0이 아니면 flag의 값을 false로 변경
            }
        }
        System.out.println("합계: " + sum);
    }
}

// 4_28 FlowEx28.java
// do-while문을 이용해서 소주 병뚜껑 숫자 맞추기
 

import java.util.Scanner;
 
public class FlowEx28 {
    public static void main(String[] args) {
        int input = 0;
        int answer = 0;
 
        answer = (int)(Math.random() * 100) + 1;
        Scanner scanner = new Scanner(System.in);
        
        // 특정 조건일 때까지 입력을 받기 위해서는 do~while문을 잘 쓴다.
        do {
            System.out.print("1과 100사이의 정수를 입력하세요.>");
 
            String tmp = scanner.nextLine();
            input = Integer.parseInt(tmp);
 
            if(input>answer) {
                System.out.println("더 작은 수로 다시 시도해보세요.");
            } else if(input < answer) {
                System.out.println("더 큰 수로 다시 시도해보세요.");
            }
        } while(input!=answer);
 
        System.out.println("정답입니다.");
    }
}

//4_29 FlowEx29.java
// 삼육구
 

public class FlowEx29 {
    public static void main(String[] args) {
        for (int i = 1; i <= 100; i++) {
            System.out.printf("i=%d", i);
            int tmp = i;
            do {
                if (tmp % 10 % 3 == 0) //예제와 조건 확인해보기 
                    System.out.printf(" 짝");
            } while ((tmp /= 10) != 0);
 
            System.out.println();
        }
    }
}

// 4_30 FlowEx30.java
// break문


 

public class FlowEx30 {
    public static void main(String[] args) {
        int sum = 0;
        int i   = 0;
 
        while(true) {
            if(sum>100) break; // 합계가 100넘는 순간 break
            ++i;
            sum += i;
        }
 
        System.out.println("i=" + i);
        System.out.println("sum=" + sum);
    }
}

// 4_31 FlowEx31.java
// continue문
 

public class FlowEx31 {
    public static void main(String[] args) {
        for(int i=0;i<=10;i++) {
            if(i%3==0)
                continue; // for문 끝으로 이동한다. (끝나지 않음)
            System.out.println(i);
        }
    }

// 4_32 FlowEx32.java
// menu FlowEx32.java : break문, continue문 (메뉴).... 성적처리 메뉴함수를 고쳐봐야겠다.

import java.util.Scanner;
 
public class FlowEx32 {
    public static void main(String[] args) {
        int menu = 0;
        int num = 0;
 
        Scanner scanner = new Scanner(System.in);
 
        while(true) {
            System.out.println("(1) square");
            System.out.println("(2) square root");
            System.out.println("(2) log");
            System.out.print("원하는 메뉴(1~3)를 선택하세요. (종료:0)>");
 
            String tmp = scanner.nextLine();
            menu = Integer.parseInt(tmp);
 
            if(menu==0) {
                System.out.println("프로그램을 종료합니다.");
                break;
            } else if (!(1 <= menu && menu <= 3)) {
                System.out.println("메뉴를 잘못 선택하셨습니다.(종료는 0)");
                continue;
            }
            System.out.println("선택하신 메뉴는 " + menu +"번입니다.");
        }
    }
}

// 4_33 FlowEx33.java
// 이름 붙은 반복문
 

public class FlowEx33 {
    public static void main(String[] args) {
        // for문에 Loop1이라는 이름을 붙여줌.
        Loop1 : for(int i=2;i<=9;i++) {
                 for(int j=1;j<=9;j++) {
                    if(j==5)
                     break Loop1;
                     //break;
                     //continue Loop1;
                     //continue;
                System.out.println(i+"*"+j+"="+i*j);
            }
            System.out.println();
        }
    }
}

// 4_34 FlowEx34.java
// 이름붙은 반복문을 이용한 메뉴

import java.util.Scanner;
 
public class FlowEx34 {
    public static void main(String[] args) {
        int menu = 0;
        int num = 0;
 
        Scanner scanner = new Scanner(System.in);
 
        outer:
        while(true) {
            System.out.println("(1) square");
            System.out.println("(2) square root");
            System.out.println("(3) log");
            System.out.print("원하는 메뉴(1~3)를 선택하세요.(종료:0)>");
 
            String tmp = scanner.nextLine();
            menu = Integer.parseInt(tmp);
 
            if(menu==0) {
                System.out.println("프로그램을 종료합니다.");
                break;
            } else if(!(1<=menu && menu<=3)) {
                System.out.println("메뉴를 잘못 선택하셨습니다.(종료는 0)");
                continue;
            }
 
            for(;;) {
                System.out.print("계산할 값을 입력하세요.(계산 종료:0, 전체 종료:99)>");
                tmp = scanner.nextLine();
                num = Integer.parseInt(tmp);
 
                if(num==0) break;
                if(num==99) break outer;
                
                switch(menu) {
                    case 1:
                        System.out.println("result="+num*num);
                        break;
                    case 2:
                        System.out.println("result="+Math.sqrt(num));
                        break;
                    case 3:
                        System.out.println("result="+Math.log(num));
                        break;
                }
            }
 
        }
    }
}

 

반응형