본문 바로가기

JAVA

if, for문 복습

# 일주일간 부산여행을 다녀온 뒤로 너무 놀자판이었기에 .. 복습을 하려고 합니다.

현재 day7 for문 공부중!


 

# { 를 쓰고 enter 입력시 바로 } 생성됨!

 

ctrl + A -> ctrl shift s

 

package Blog_for_moon;

import java.util.Scanner;

public class Wlyu {

	public static void main(String[] args) {
		Scanner sc = new Scanner (System.in);

		System.out.println("점수 입력 >> ");
		int score = sc.nextInt();
		
		if (score >= 90) {
			System.out.println("당신의 학점은 A입니다.");
		} else if (score >= 80 && score < 90) {
			System.out.println("당신의 학점은 B입니다.");
		} else if (score >= 70 && score <80) {
			System.out.println("당신의 학점은 C입니다.");
		} else {
			System.out.println("당신의 학점은 F입니다.");
		}
			
		}

}
package Blog_for_moon;

import java.util.Scanner;

public class Wlyu {

	public static void main(String[] args) {
		Scanner sc = new Scanner (System.in);

		System.out.println("점수 입력 >> ");
		int score = sc.nextInt();
		
		char grade = 0;
		
		if (score >= 90) {
			grade = 'A';
		} else if (score >= 80 && score < 90) {
			grade = 'B';
		} else if (score >= 70 && score <80) {
			grade = 'C';
		} else if (score < 70){
			grade = 'F';
		}
			System.out.println("당신의 학점은" + grade + "입니다.");
		}

}

# 여기서 else 를 쓰면 오류가 발생하지 않는데,

else if를 쓰면 오류가 발생한다.

왜?

char grade = 0;으로 초깃값 작성을 하지 않았기 때문이다.

char grade; -> char grade = 0;

이렇게 컴파일 할 때 확인 한 번 해주기!

0이 아니여도 된다 !

 

# 그냥 변수 선언하고 else 사용해도 괜찮, 무방

but, 명확한 코드를 원할 때에는 else if 를 사용하자!

 

// 유효성 검사 : 원하는 값을 받았는지 체크하는 검사

package Blog_for_moon;

import java.util.Scanner;

public class Wlyu {

	public static void main(String[] args) {
		Scanner sc = new Scanner (System.in);

		System.out.println("점수 입력 >> ");
		int score = sc.nextInt();
		
		if (score >= 0 && score <=100 ) {
		char grade = 0;
		
		if (score >= 90) {
			grade = 'A';
		} else if (score >= 80 && score < 90) {
			grade = 'B';
		} else if (score >= 70 && score <80) {
			grade = 'C';
		} else if (score < 70){
			grade = 'F';
		}
			System.out.println("당신의 학점은" + grade + "입니다.");
		} else {
			System.out.println("정확한 학점을 입력해주세요.");
		}

}}

유효성 검사는 0점부터 100점까지만 점수 입력 가능하고, 그러한 조건을 정확하게 입력받기 위해 상단에 if문을 한번 더 사용해주었습니다!

 

package Blog_for_moon;

import java.util.Scanner;

public class Wlyu2 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("점수 입력 >> ");
		int score = sc.nextInt();
		char grade = 'F';
		
//		100
//		99, 98, 97 ... 90 => A
//		1의 자리 숫자는 중요 x / 10의 자리숫자만 중요 o
//		89, 88, 87, 86 .... 80  => B
//		10의 자리만 판별하자! 나누기 사용!
		
		
		if (score >= 0 && score <=100) {
			switch(score/10) {
			case 10: 
				grade = 'A';
			case 9:
				grade = 'A';
			case 8: 
				grade = 'B';
			case 7:
				grade = 'C';
			default:
				grade = 'F';
			}
			System.out.println("당신의 학점은" + grade + "입니다.");
		}}}

이렇게 쓰면 F만 출력되는 불상사를 맞게 됩니다!

그러면 어떻게 해야할까요 ?

break를 사용해주어야 합니다~

package Blog_for_moon;

import java.util.Scanner;

public class Wlyu2 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("점수 입력 >> ");
		int score = sc.nextInt();
		char grade = 'F';
		
//		100
//		99, 98, 97 ... 90 => A
//		1의 자리 숫자는 중요 x / 10의 자리숫자만 중요 o
//		89, 88, 87, 86 .... 80  => B
//		10의 자리만 판별하자! 나누기 사용!
		
		
		if (score >= 0 && score <=100) {
			switch(score/10) {
			case 10: 
				grade = 'A';
				break;
			case 9:
				grade = 'A';
				break;
			case 8: 
				grade = 'B';
				break;
			case 7:
				grade = 'C';
				break;
			default:
				grade = 'F';
				break;
			}
			System.out.println("당신의 학점은" + grade + "입니다.");
		}}}

이게 맞습니다 !

case 10과 9는 같은 값인 A를 출력합니다.

그러므로 반복되는 식을 두번이나 굳이 작성하지 않아도 됩니다.

package Blog_for_moon;

import java.util.Scanner;

public class Wlyu2 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("점수 입력 >> ");
		int score = sc.nextInt();
		char grade = 'F';
		
//		100
//		99, 98, 97 ... 90 => A
//		1의 자리 숫자는 중요 x / 10의 자리숫자만 중요 o
//		89, 88, 87, 86 .... 80  => B
//		10의 자리만 판별하자! 나누기 사용!
		
		
		if (score >= 0 && score <=100) {
			switch(score/10) {
			case 10: 
			case 9:
				grade = 'A';
				break;
			case 8: 
				grade = 'B';
				break;
			case 7:
				grade = 'C';
				break;
			default:
				grade = 'F';
				break;
			}
			System.out.println("당신의 학점은" + grade + "입니다.");
		}}}

월 입력 코드!

package Blog_for_moon;

import java.util.Scanner;

public class Wlyu3 {

	public static void main(String[] args) {
		System.out.println("월 입력 >> ");
		Scanner sc = new Scanner(System.in);
		int month = sc.nextInt();
		int lastDay = 0;
		
//		31일 : 1,3,5,7,8,10,12
//		30일 : 4,6,9,11
//		28일 : 2
		switch (month) {
		
		case 1,3,5,7,8,10,12: 
			lastDay =31;
		case 4,6,9,11:
			lastDay = 30;
		case 2:
			lastDay = 28;
		default:
		System.out.println("정확한 월 수를 입력해주세요");
		}
		}
	}

# 또 바보같은 실수, break사용해주어야죠!

package Blog_for_moon;

import java.util.Scanner;

public class Wlyu3 {

	public static void main(String[] args) {
		System.out.println("월 입력 >> ");
		Scanner sc = new Scanner(System.in);
		int month = sc.nextInt();
		int lastDay = 0;
		
//		31일 : 1,3,5,7,8,10,12
//		30일 : 4,6,9,11
//		28일 : 2
		if (month >=1 && month <=12) {
		
		switch (month) {
		
		case 1,3,5,7,8,10,12: 
			lastDay =31;
			break;
		case 4,6,9,11:
			lastDay = 30;
			break;
		case 2:
			lastDay = 28;
		}
		System.out.println("마지막 일은" + lastDay + "일 입니다.");
		}
		else {
			System.out.println("정확한 월를 입력해주세요!");
		}
		}
	}

여기서 default 를 else로 변경해주었음, 왜? 유효성 검사를 하기 위해서

상단에 if(month >=1 && month <=12) 라는 코드와

else코드를 작성해 주었습니다 !

 

- for문

             for(초기식 ; 조건식; 증감식) {

                   반복할 문장;

                    반복할 문장;

...

}

 

1. 초기식을 실행한다.

2. 조건식을 확인한다.

  2-1. 조건식이 참이라면 for문 안쪽 문장을 수행한다.

          2-1-1. 실행한 다음, 증감식을 실행한다.

  2-2. 조건식이 거짓이라면 for문을 마친다. (종료)

package Blog_for_moon;

public class Wlyu5 {

	public static void main(String[] args) {

//		i는 처음 값이 5이며, i는 10보다 작을 때까지 1씩 증가하면서 반복하겠다.
		for(int i = 5; i < 10; i = i+1) {
			System.out.println(i + "번째 입니다.");
		}
		

	}

}
package Blog_for_moon;

public class Wlyu6 {

	public static void main(String[] args) {
		for (int i=0; true; i= i+1) {
			System.out.println(i);
		}

	}

}

# 무한루프에 빠짐, 

true -> false 로 하면 오류가 발생함!

 

package Blog_for_moon;

public class Wlyu6 {

	public static void main(String[] args) {
		for (int i=0; i<10; ) {
			System.out.println(i + "번째 입니다.");
		}

	}

}

# 계속 반복됨! 증감식이 없으니까!

 

package Blog_for_moon;

import java.util.Scanner;

public class Wlyu6 {

	public static void main(String[] args) {
//      1. 사용자에게 반복 횟수를 입력 받아, 해당 횟수만큼 이름 출력하기
//      입력 예시 
//      반복 횟수 >> 5
//      출력 예시
//      김참이
//      김참이
//      .... 5번 반복
		
		Scanner sc = new Scanner(System.in);
		System.out.println("반복횟수 >>");
		int count = sc.nextInt();
		for (int i =0; i<count; i=i+1) {
			System.out.println("김지윤");
		}
package Blog_for_moon;

import java.util.Scanner;

public class Wlyu6 {

	public static void main(String[] args) {	
		Scanner sc = new Scanner(System.in);

      
//      2. 사용자에게 정수를 입력받아 1부터 해당 정수까지 가로로 출력하기
//      입력예시
//      정수 >> 10
//      출력 예시
//      1 2 3 4 5 6 7 8 9 10
		System.out.println("정수 >> ");
		int cnt = sc.nextInt();
		
		for (int i=1; i<=cnt; i=i+1) {
			System.out.print(i + " ");
		}
package Blog_for_moon;

import java.util.Scanner;

public class Wlyu6 {

	public static void main(String[] args) {	
		Scanner sc = new Scanner(System.in);
      
      
//      3. 10부터 1까지 가로로 출력하기
//      10 9 8 7 6 5 4 3 2 1
		int num  = 10;
		for (int i=0; i < 10; i=i+1) {
			System.out.print(i + " ");
			num = num - 1;
		}
//      3. 10부터 1까지 가로로 출력하기
//      10 9 8 7 6 5 4 3 2 1
		for (int i=10; i >0; i = i-1) {
			System.out.println(i + " ");
package Blog_for_moon;

import java.util.Scanner;

public class Wlyu6 {

	public static void main(String[] args) {	
		Scanner sc = new Scanner(System.in);

      
//      4. 1부터 100까지의 숫자 중 짝수만 가로로 출력하기
		for (int i=2; i<=100; i= i+2) {
			System.out.println(i + " ");
		}
package Blog_for_moon;

import java.util.Scanner;

public class Wlyu6 {

	public static void main(String[] args) {	
		Scanner sc = new Scanner(System.in);
		
//      5. 사용자에게 정수를 입력받아 1부터 해당 수까지의 총합 출력하기
		int sum = 0;
		int cnt = sc.nextInt();
		
		for (int i = 0; i < cnt; i=i+1) {
			sum = sum + 1;
			
		}
		System.out.println(sum);

#구구단

package Blog_for_moon;

import java.util.Scanner;

public class Wlyu6 {

	public static void main(String[] args) {	
		Scanner sc = new Scanner(System.in);
		
//      6. 사용자에게 단을 입력받아 구구단 출력하기
		
		int dan = 3;
		System.out.println("--구구단--");
		
		for (int i = 0; i<9; i=i+1) {
			System.out.println(dan + "x"+ (i+1)+"="+(dan*(i+1)) );
		}
package Blog_for_moon;

import java.util.Scanner;

public class Wlyu6 {

	public static void main(String[] args) {	
		Scanner sc = new Scanner(System.in);
		
//      7. 사용자에게 정수 입력받아 별 출력하기
//      *
//      **
//      ***
//      ****
      
		
		String star = "*";
		for (int i = 0; i<4; i=i+1) {
			System.out.println(star);
			star = star + "*";
		}

 

package Blog_for_moon;

import java.util.Scanner;

public class Wlyu6 {

	public static void main(String[] args) {	
		Scanner sc = new Scanner(System.in);
		
//      7. 사용자에게 정수 입력받아 별 출력하기

      
//         *
//        **
//       ***
//      ****
		
		String star = "*";
		for (int i = 0; i<4; i=i+1) {
			System.out.printf("%4s\n", star);
			star = star + "*";
		}

 

# 2중 for문 제일 어려움 (복습 3번 하기: ●○○ )

package Blog_for_moon;

import java.util.Scanner;

public class Wlyu7 {

	public static void main(String[] args) {
//	2단부터 9단까지 출력
//  9번의 반복
		Scanner sc = new Scanner(System.in);
		for (int dan = 2; dan <=9; dan = dan + 1 ) {
		
		
		for (int i=1; i<10 ; i=i+1) {
		System.out.println(dan + "x" + i + "=" + (dan*i));
		}
	}

	}

}

'JAVA' 카테고리의 다른 글

[08] JAVA_DAY08  (0) 2022.08.09
[10] JAVA_DAY10  (0) 2022.08.08
[09] JAVA_DAY09  (0) 2022.08.08
for문 연습  (0) 2022.07.30
[07] JAVA_DAY07  (0) 2022.07.29