Java practice_240104

Choi Suyeon·2024년 1월 4일

Switch

  • swith~case 사용 : 일치하는 정수를 비교할 때 사용
 문법) 
 switch(변수명){ 
 	case 상수 : 변수가 상수와 일치했을 때 수행 문장들
    case 상수 : 변수가 상수와 일치했을 때 수행 문장들 
    default : 변수가 일치하는 상수가 없었을 때 수행될 문장들 
 }
  • break; : break를 안하면 그 아래 모든 case까지 출력됨. 상황에 따라 적용. 필수는 아님.
package day0104;


public class TestSwitchCase {

	public static final int GRADE_A_PLUS = 10;
	public static final int GRADE_A = 9;
	public static final int GRADE_B = 8;
	public static final int GRADE_C = 7;
	public static final int GRADE_D = 6;

	public static void main(String[] args) {

		int i = 0;
		switch (i) {
		case 0:
			System.out.println("영");

			break;
		case 1:
			System.out.println("일");

			break;
		case 2:
			System.out.println("이");

			break;
		case 3:
			System.out.println("삼");

			break;

		default:
			System.out.println("변수와 일치하는 상수 없음");
			break;
		}
  • 학점구하기
		
		//점수에 대한 학점 구하기 => 범위에 대한 값(if가 더 적절)
//		a = 90~100		score/10	100 => 10
//		b = 80~89					90~99 => 9
//		c = 70~79					80~89 => 8
//		d = 60~69					70~79 => 7
//		f = 0~59					60~69 => 6	
		
		int score = 97;
		char grade = '\u0000';//정수 / 정수 = 정수
		switch (score/10) {
			case GRADE_A_PLUS:
			
				break;
			case GRADE_A:
				grade = 'A';
				break;
			case GRADE_B:
				grade = 'B';
				break;
			case GRADE_C:
				grade = 'C';
				break;
			case GRADE_D:
				grade = 'D';
				break;

			default:
				grade = 'F';
				break;
		}//end switch
        
     System.out.println("---------------------------------------------------");
		
		score = 90;
		char grade = 64; // 대문자(65-90), 소문자(97-122), 숫자(48-57(0~9))
		switch (score / 10) {
		case GRADE_D:
			grade++; // grade 64->65
		case GRADE_C:
			grade++;// grade 65->66
		case GRADE_B:
			grade++;// grade 66->67
		case GRADE_A:
		case GRADE_A_PLUS:
			grade++;
			break;// grade 67->68 => char D = 68; 60점의 학점은 D

		default:
			grade += 6;// char 70 = F
			break;
		}
		System.out.println(score + "점의 학점은 " + grade);
        //출력
        //90점의 학점은 A


		score = 110;
		grade = 64;
		if (score > -1 && score < 101) {
			switch (score / 10) {
			case GRADE_D:
				grade++; // grade 64->65
			case GRADE_C:
				grade++;// grade 65->66
			case GRADE_B:
				grade++;// grade 66->67
			case GRADE_A:
			case GRADE_A_PLUS:
				grade++;
				break;// grade 67->68 => char D = 68; 60점의 학점은 D

			default:
				grade += 6;
				break;
			}// end switch

			System.out.println(score + "점의 학점은 " + grade);

		} else {
			System.out.println(score + "점은 잘못된 점수입니다.");
		} // end else
        
        //출력
        //110점은 잘못된 점수입니다.

	}// main

}// class

for문

  • 시작과 끝을 알때 사용하는 반복문
 문법)
 for(시작값 ; 조건식(끝값) ; 증*감소식){
 	반복수행될 문장들;
 } 
package day0104;

public class TestFor {

	public static void main(String[] args) {

		// 안녕하세요를 10번 출력하는 코드 작성.
		for (int i = 0; i < 10; i++) {
			System.out.println(i + "번째 안녕하세요");
		} // end for

출력

0번째 안녕하세요
1번째 안녕하세요
2번째 안녕하세요
3번째 안녕하세요
4번째 안녕하세요
5번째 안녕하세요
6번째 안녕하세요
7번째 안녕하세요
8번째 안녕하세요
9번째 안녕하세요
  • 1부터 100까지 옆으로 출력하는 코드 작성.
		for (int i = 1; i < 101; i++) {
			System.out.print(i + " ");
		} // end for

출력

1 2 3 4 5 6 7 8 9 10 11 12 13...92 93 94 95 96 97 98 99 100 
  • 1에서 100까지 홀수만 옆으로 출력하는 코드 작성.
		int cnt = 0;
		// 증감식은 대상체의 값을 변화시키고 저장할 수 있는 모든 연산자를 사용할 수 있다.
		for (int i = 1; i < 101; i++) {// i++, i=i+1, i+=1
			cnt++;
			if (i % 2 != 0) {
				System.out.print(i + " ");
			} // end if
		} // end for
		System.out.println("\n" + cnt + "번");

		// 증감소식을 i+=2 이렇게 작성하면 if 없이 홀수만 출력 가능.
		for (int i = 1; i < 101; i += 2) {// i++, i=i+1, i+=1
			System.out.print(i + " ");
		} // end for

출력

1 3 5 7 9 11 13 15 17 19 21 23...85 87 89 91 93 95 97 99 
100번
1 3 5 7 9 11 13 15 17 19...85 87 89 91 93 95 97 99
  • 100에서 1까지 옆으로 출력하는 코드 작성.
		for (int i = 100; i > 0; i--) {
			System.out.print(i + " ");
		} // end for

출력

100 99 98 97 96 95 94 93 92 91 90 89 88...13 12 11 10 9 8 7 6 5 4 3 2 1
  • 구구단
    main method에서 처음 입력된 값이 구구단의 범위였을 때(2~9)
    해당 단의 구구단을 출력하는 코드 작성.
		int j = Integer.parseInt(args[0]);// Integer.parseInt() : 인수로 받은 문자열"숫자"를 숫자로 바꿔주는 메소드
		for (int i = 0; i < 10; i++) {
			System.out.println(j + " * " + i + " = " + j * i);
		} // end for

출력

6 * 0 = 0
6 * 1 = 6
6 * 2 = 12
6 * 3 = 18
6 * 4 = 24
6 * 5 = 30
6 * 6 = 36
6 * 7 = 42
6 * 8 = 48
6 * 9 = 54
  • 1부터 100까지의 합을 출력.
		int sum = 0;
		for (int i = 1; i < 101; i++) {
			sum += i;
		} // end for
		System.out.println("1부터 100까지의 합은 " + sum);
	}// main

}// class

출력

1부터 100까지의 합은 5050

다중 for문

  • 인덱스를 두개 사용하여 반복해야할 때
 문법)
for (초기값;조건식;증감소식){
	반복수행문장//단인 for의 영역
 	
 	for (초기값;조건식;증감소식){
 		반복수행문장 //다중 for의 영역	
 	}
 
 		반복 수행 문장//단일 for의 영역
}
  • 다중 for의 동작 : 바깥 for가 한번 반복할 때, 안쪽 for는 몇 번 반복하는가?
package day0104;

public class TestFor2 {
	public static void main(String[] args) {

		// 다중 for의 동작 : 바깥 for가 한번 반복할 때, 안쪽 for는 몇 번 반복하는가?
		for (int i = 0; i < 5; i++) {// 5번 반복
			for (int j = 0; j < 3; j++) {// 3번 반복
				System.out.println("i: " + i + " j: " + j);
			} // end for

			System.out.println("---------------------------------------------");

		} // end for

출력

i: 0 j: 0
i: 0 j: 1
i: 0 j: 2
---------------------------------------------
i: 1 j: 0
i: 1 j: 1
i: 1 j: 2
---------------------------------------------
i: 2 j: 0
i: 2 j: 1
i: 2 j: 2
---------------------------------------------
i: 3 j: 0
i: 3 j: 1
i: 3 j: 2
---------------------------------------------
i: 4 j: 0
i: 4 j: 1
i: 4 j: 2
---------------------------------------------
* 구구단
```java
		for (int i = 1; i < 10; i++) {
			System.out.println(i + "단 입니다.");
			for (int j = 1; j < 10; j++) {
				System.out.println(i + " X " + j + " = " + i * j);
			} // end for

			System.out.println("---------------------------------------------");

		} // end for

출력

1단 입니다.
1 X 1 = 1
1 X 2 = 2
1 X 3 = 3
1 X 4 = 4
1 X 5 = 5
1 X 6 = 6
1 X 7 = 7
1 X 8 = 8
1 X 9 = 9
---------------------------------------------
2단 입니다.
2 X 1 = 2
2 X 2 = 4
2 X 3 = 6
2 X 4 = 8
2 X 5 = 10
2 X 6 = 12
2 X 7 = 14
2 X 8 = 16
2 X 9 = 18
---------------------------------------------
.
.
.
---------------------------------------------
8단 입니다.
8 X 1 = 8
8 X 2 = 16
8 X 3 = 24
8 X 4 = 32
8 X 5 = 40
8 X 6 = 48
8 X 7 = 56
8 X 8 = 64
8 X 9 = 72
---------------------------------------------
9단 입니다.
9 X 1 = 9
9 X 2 = 18
9 X 3 = 27
9 X 4 = 36
9 X 5 = 45
9 X 6 = 54
9 X 7 = 63
9 X 8 = 72
9 X 9 = 81
---------------------------------------------
  • 규칙찾아 반복
		// 안쪽 for가 0에서부터 바깥for의 현재 번째까지 반복
		for (int i = 0; i < 3; i++) {
			for (int j = 0; j < i + 1; j++) {
				System.out.print(i + " " + j + " ");
			} // end for
			System.out.println();
		} // end for

		System.out.println("---------------------------------------------");

		// 안쪽 for의 시작이 바깥 for의 현재보다 1큰 지점에서 5까지 반복
		for (int i = 0; i < 5; i++) {
			for (int j = i + 1; j < 6; j++) {
				System.out.print(i + " " + j + " ");
			} // end for
			System.out.println();
		} // end for

		System.out.println("---------------------------------------------");

		int k = 1;
		for (int i = 0; i < 4; i++) {
			for (int j = 0; j < i + 1; j++) {
				System.out.print(k++ + " ");
			} // end for
			System.out.println();
		} // end for

	}// main

}// class

출력

---------------------------------------------
0 0 
1 0 1 1 
2 0 2 1 2 2 
---------------------------------------------
0 1 0 2 0 3 0 4 0 5 
1 2 1 3 1 4 1 5 
2 3 2 4 2 5 
3 4 3 5 
4 5 
---------------------------------------------
1 
2 3 
4 5 6 
7 8 9 10 

무한루프

  • 다양한 for의 형태
    -무한 루트 : 종료되지 않아야 하는 프로그램을 제작할 때(시계, 운영체제, 서버)

문법

//증가하는 수를 세는 무한루프
for (초기값; ; 중감소식){ 
  
}

//증가하는 수를 세지 않는 무한루프
for (; ;){
  
 }

무한루프 아래 라인에 코드를 정의하면 실행될 수 없다.

	public static void main(String[] args) {

		for(int i=0; ; i++) {
			
			System.out.println(i);
			
		}
		//System.out.println("무한루프"); 무한루프 아래에 있는 문장은 실행될 수 없다.
		
        //무한루프는 증가하는 수를 세지 않는다.
		for (; ; ) {
			System.out.println("무한루프");
		}

여러개의 초기값을 가진 for

		//여러개의 초기값을 선언할 수 있다.
		//조건식 변수는 하나만 설정.
		//원하는 변수만 증감식 써도 됨.
		for(int i=0, j=0, k=0; i<10; i++, j+=100) {
			
			System.out.println("i: " + i + " j: " + j + " k: " + k);
		}//end for

continue

		//continue 반복 건너뛰기(주로 if안에서 사용)
		//1에서 100까지 홀수만 출력
		for (int i=1; i < 101; i++) {
			if(i%2==1) {
				continue;
				
			}//end if
			
			System.out.println(i + " ");
		}//end for

0개의 댓글