본문 바로가기

Learning/JAVA

Switch문, for문, while문

  • Switch 문으로 국어, 영어, 수학 점수 입력하고 총점, 평균, 학점 출력 (day02 패키지의 Exam01 클래스 )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package day02;
import java.util.Scanner;
public class Exam01 {
    public static void main(String[] args) {
        Scanner sc = new Scanner (System.in);
        System.out.println("국어점수 입력>>");
        int kor=sc.nextInt();
        System.out.println("영어점수 입력>>");
        int eng=sc.nextInt();
        System.out.println("수학점수 입력>>");
        int math=sc.nextInt();
        int total=(kor+eng+math);
        int avg=(kor+eng+math)/3;
        
        String grade="";
        
        switch(avg/10) { //A학점, B학점, C학점의 공통점: 점수를 10으로 나눴을때 몫이 9, 8, 7...
        case 9 :
            grade="A";break;
        case 8 :
            grade="B";break;
        case 7 :
            grade="C";break;
        default :
            grade="F";break;
        }
        System.out.println("총점: " +total);
        System.out.println("평균: " +avg);
        System.out.println("학점: " +grade);
    }    
}

 

 

  • 금액 입력하고 만원 권, 천원 권 몇 장인지 출력하기 (Exam02)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package day02;
import java.util.Scanner;
public class Exam02 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("금액을 입력하세요");
        int money = sc.nextInt();
        
        int result = money/10000;
        System.out.println("만원권: " +result +"장");
        
        money = money%10000;
        result = money/1000;
        
        System.out.println("천원권: " +result +"장");
    }
}

 

 

  • 단을 입력받아 해당되는 단의 구구단 출력 (Exam03)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package day02;
import java.util.Scanner;
public class Exam03 {
    public static void main(String[] args) {
        /*
        for(int i=1;i<6;i++) { //i=1초기값,2,3,4,5 6은 i<6조건을 만족하지 않기 때문에 for문 빠져나옴.
            System.out.println(i+ ":안녕하세요");
        }
        System.out.println("========");
        
        for(int i=5;i>0;i--) {
            System.out.println(i+ ":안녕하세요");
        }
        System.out.println("========");
        
        for(int j=1;j<10;j++) {
            System.out.println("2*"+ j+ "=" +2*j);
        }   
        System.out.println("========");
   //짝수만 출력하기 ver.1
        for(int i=1;i<=10;i++) {
            if(i%2==0) {
                System.out.println(i);
            }
        }
        System.out.println("=======");
        //짝수만 출력하기 ver.2
        for(int i=2;i<=10;i+=2) {
            System.out.println(i);
        }
        */ 
        //단을 입력받아 해당되는 단의 구구단 출력
        Scanner sc=new Scanner(System.in);
        System.out.println("단을 입력>>");
        int d=sc.nextInt();
        
        for(int j=1;j<10;j++) {
            System.out.println(d+"단 "+d+"*"+j+"="+(d*j));
        }
    }
}

 

  • 1부터 100까지의 합 구하고 10번만 출력하기 (Exam04)
1
2
3
4
5
6
7
8
9
10
11
12
13
package day02;
public class Exam04 {
    public static void main(String[] args) {
                
        int hap=0;
        for(int i=1;i<=100;i++) {
            hap+=i; //1부터 100까지의 합을 hap변수로 구함
            if(i%10==0) { //i가 10으로 나누어 떨어질때: 10,20,30,...100까지. 그때만 hap을 출력하겠다는 의미.
                System.out.println("1부터"+i+"까지의 합 "+hap);
            }
        }
    }
}
cs

 

  • 1+2+3+4+5+6+7+8+9+10=55 형식으로 값 출력하기 (Exam04)
1
2
3
4
5
6
7
8
int s=0;
        for(int i=1;i<=10;i++) {
            s+=i;
            if(i!=10) {
                System.out.print(i+"+");
            }else {
                System.out.print(i+"="+s);
            }
cs

 

 

  • 입력할 수의 개수를 정하고, 입력한 수들을 더하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package day02;
import java.util.Scanner;
public class Exam05 {
    public static void main(String[]args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("입력할 개수>>");
        int cnt=sc.nextInt();
        
        System.out.println("데이터입력>>");
        int sum=0;
        
        for(int i=0;i<cnt;i++) { //for문 안에서 수들을 "입력"하도록 하면 처음에 정한 개수만큼만 수 입력가능. 그걸 벗어나면 자동으로 수 입력 못하게.
            int inputData = sc.nextInt();
            sum+=inputData; //입력한 수들을 자동으로 더하도록  sum변수 선언
        }
        System.out.println("합계:"+sum); //더한 값들을 출력
            
    }
}
cs

 

  • 학생 수 입력, 한 줄에 앉을 학생 수 입력 (Exam06)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package day02;
import java.util.Scanner;
public class Exam06 {
    public static void main(String[] args) {
        
        /*
        int sum=0;
        for(int i=1;i<=100;i++) {
            sum+=i;
            if(i%10==0) {
                System.out.println((i-9)+"부터"+i+"까지의 합 "+sum);
                sum=0;  //if를 한번 돌고 난 다음에 sum이 0부터 시작하도록. 합을 누적시키는게 아니라 단계별로 구하기 위해서.
            }
        }
        /*학생수와 한줄에 앉을 학생 수를 입력받아 출력하시오
         *
         */
        Scanner sc=new Scanner(System.in);
        System.out.println("학생 수를 입력>>");
        int stuCnt=sc.nextInt();
        System.out.println("한줄 인원 수 입력>>");
        int lineCnt=sc.nextInt();
        for(int i=1;i<=stuCnt;i++) {
            System.out.print(i+"\t"); //\t는 탭만큼 띄운다는 뜻
            if(i%lineCnt==0) { //i가 lineCnt 즉 한줄 인원수랑 똑같으면. 한줄에 다 찼으면
                System.out.println(); //다음 줄로 띄운다.
            }
        }
        
        /*
        int row=stuCnt%lineCnt;
        if(row==0) {
            System.out.println((stuCnt/lineCnt)+"줄 필요");
        }else {
            System.out.println(((stuCnt/lineCnt)+1+"줄 필요"));
        }
        
        */
        //삼항 연산자(조건연산자)
        
        int r=(stuCnt%lineCnt==0)? stuCnt/lineCnt:(stuCnt/lineCnt)+1;  
        System.out.println();
        System.out.println("총라인 수: "+r);
    }
}
cs

 

  • 반복문 (for, while, do~while) (Exam072)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package day02;
public class Exam072 {
    public static void main(String[] args) {
        
        for(int i=1;i<6;i++) {
            System.out.print(i+"\t");
        }
        System.out.println("\n-----");
        
        int n=1;
        while(n<6) { //조건에 안맞으면 실행 안함
            System.out.print(n+"\t");
            n++;
        }
        System.out.println("\n----");
        
        //1부터 5까지 출력 do~while
        int m=1;
        do { //최소한 한번은 실행
            System.out.print(m+"\t");
            m++;
        }while(m<6);
        
    }
}

 

 

  • 1부터 10까지 홀수의 합 구하기 (Exam08)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package day02;
public class Exam08 {
    public static void main(String[] args) {
        //1부터 10까지 홀수의 합을 구하기
        
        int i=0;
        int sum=0;
        while (i<10) {
            i++;
            if(i%2==1) {
                sum+=i;
            }
        }
        System.out.println("결과: "+sum);
        System.out.println("======");
        
        int hap=0;
        for(int j=1;j<=10;j++) {
            if(j%2!=1continue;
            hap+=j;
        }
        System.out.println("continue 결과: "+hap);
        System.out.println("======");
        /*j가 1일때 j%2!=1이란 조건에 안걸림. continue 안걸리고 hap에 j값 더함
         * j가 2일때 j%2!=1이란 조건에 걸림. 그러면 continue만나고 다시 올라감.
         * 결국 홀수만 더하게 되는것.
         */
        
        System.out.println("결과: "+sum);
        System.out.println("======");
        
        int h=0;
        for(int k=1;k<=10;k++) {
            if(k%2!=1break;
            h+=k;
        }
        System.out.println("break 결과: "+h);
        System.out.println("======");
        /*break는 반복문을 벗어나라.
         * k가 1일때 h는 1. k가 2일때 나머지가 1이 아니므로 break를 만나서 반복문을 벗어남.
         * 그래서 h는 1밖에 안됨
         */
    
    }
}
cs

 

  • 수를 입력하고 싶은 만큼 입력하고, -1을 입력하면 그 전까지의 합계와 평균 구하기 (Exam09)
  • 입력하고 싶은 만큼 입력한다는 건 반복문 안에 nextInt()을 써야한다는 뜻. 반복문 밖에 쓰면 한번밖에 입력 못함.

  • 평균을 구하려면 개수를 구해야함. 반복할때 개수가 1씩 늘어나면 됨.

  • -1일때 합계, 평균, 개수 멈춰야함 break밑에 두기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package day02;
import java.util.Scanner;
public class Exam09 {
    public static void main(String[] args) {
        //수를 입력하는데 -1이 입력되면 입력 끝.
        //입력한 수의 합계와 평균을 구하시오
        //예)10 5 6 9 -1
        Scanner sc=new Scanner(System.in);
        System.out.println("수를 입력하세요. 마지막은 -1");
        
        int sum=0;
        int cnt=0//평균을 구하려면 합계를 '입력한 수의 개수'만큼 나눠야함. 몇 번을 입력했는지 알려면 개수도 카운트 되어야함.
        
        while(true) {
            int su=sc.nextInt();
            if(su==-1break//-1을 입력하면 벗어나기.
            sum+=su; //입력한 수, su에 수를 입력 할때마다 덧셈. su가 -1이 아니라면 계속 더함.
            cnt++//-1을 입력하기 전까지 개수를 셈. su에 수를 입력 할때마다 1씩 증가.
        }
        System.out.println("합계: "+sum);
        System.out.println("입력개수: "+cnt);
        System.out.println("평균: "+sum/cnt);
        sc.close();
    }
}

 

  • 문단을 나눠 구구단 출력하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package day02;
public class Exam10 {
    public static void main(String[] args) {
        
        for(int k=2;k<=4;k++) { //이중 for문. 바깥 for가 한번 돌때 안에 for가 다 돌고 나서 바깥 for문 두번째 돔.
            for(int i=1;i<=3;i++) {
                System.out.println(k+"*"+i+"="+k*i);    
            }
            System.out.println("===");
        }
    
        
        for(int i=1;i<=9;i++) {
            for(int d=4;d<=6;d++){
                System.out.print(d+"*"+i+"="+d*i+"\t");             
            }
            System.out.println();
        }
    }   
}
cs