** 복습 **

 

변수 설정  :  데이터타입 변수명 = 초기값;

산술연산자중 : / % 용도  
나머지(%)용도 - 1. 짝,홀수 구하기 ex) if(a%2 == 0) 짝수
                                                             if(a%2 != 0) 홀수

                            2. 배수 구하기 ex) if(a%5 == 0) 5의 배수
                                                          if(a%2 != 0) 5의 배수 X


** Scanner ** 정의하기

 

import java.util.Scanner;

public class MySample1102 {

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

}

** 실습1 **

/* 1
 문제)주사위를 두번 던져서 나온 수를 입력받아 두수가 모두 4이상이면 "이겼습니다."
   한개만 4이상이면 "비겼습니다." 모두 4미만이면 "졌습니다."라고 출력하는 프로그램 
   
 입력예)주사위 던진 결과를 입력하세요.>3 4
 출력예)비겼습니다.
 
 입력예)주사위 던진 결과를 입력하세요.>3 8
 출력예)입력값은 1~6사이 값으로 하세요.
 
 단, 주사위 입력값은 1~6사이 값이어야 함. if로만 체크함
 */

import java.util.Scanner;

public class MySample1102 {

	public static void main(String[] args) 
    {
		Scanner scn = new Scanner(System.in);
        
		
		int a = scn.nextInt();
		int b = scn.nextInt();
		
		if (1 <= a && a <= 6 && 1<= b && b <= 6)
		{
			if(a >= 4 && b >= 4)
			{
				System.out.println("이겼습니다.");
			}
			else if(a >= 4 || b >= 4)
			{
				System.out.println("비겼습니다.");
			}
			else
			{
				System.out.println("졌습니다.");
			}			
		}
		else 
		{
			System.out.println("입력값은 1~6사이 값으로 하세요.");
		}     
        
//-----------------------------------------------------------------------------

        //다른 풀이
        
		System.out.print("주사위 던진 결과를 입력하세요.>");		
		int a = scn.nextInt();
		int b = scn.nextInt();
		
		if(a < 1 || a > 6 || b < 1 || b >6)
		{
			System.out.println("입력값은 1~6사이 값으로 하세요.");
		}
		else if(a >=4 && b >= 4)
		{
			System.out.println("이겼습니다.");
		}
		else if(a >= 4 || b >= 4)
		{
			System.out.println("비겼습니다.");
		}
		else
		{
			System.out.println("졌습니다.");
		}
        
	}

}

** 실습2 **

/* 2
 문제)중첩if
   정수 개를 입력받아 그 중 가장 큰 수를 출력하는 프로그램
 입력예)세개의 정수를 입력하세요.>1 5 4
 출력예)입력받은 수 중 가장 큰 수는 5 입니다.
 단, 출력은 max 변수를 사용함
 */

import java.util.Scanner;

public class MySample1102 {

	public static void main(String[] args) 
	{
		Scanner scn = new Scanner(System.in);
		
		System.out.println("세개의 정수를 입력하세요");
		int a = scn.nextInt();
		int b = scn.nextInt();
		int c = scn.nextInt();
		
		if (a >= b) {
			if(a >= c)
			{
				System.out.printf("입력받은 수 중 가장 큰 수는 %d 입니다. \n",a );
			}
			else
			{
				System.out.printf("입력받은 수 중 가장 큰 수는 %d 입니다. \n",c );
			}
		}
		else
		{
			if (b >= c)
			{
				System.out.printf("입력받은 수 중 가장 큰 수는 %d 입니다. \n",b );
			}
			else 
			{
				System.out.printf("입력받은 수 중 가장 큰 수는 %d 입니다. \n",c );
			}
		}

//--------------------------------------------------------------------------------------

		//출력을 max변수로 사용한 경우

		System.out.println("세개의 정수를 입력하세요");
		int a = scn.nextInt();
		int b = scn.nextInt();
		int c = scn.nextInt();
		int max;
		
		if (a >= b) {
			if(a >= c)
			{
				max = a;
			}
			else
			{
				max = c;
			}
		}
		else{
			if (b >= c)
			{
				max = b;
			}
			else 
			{
				max = c;
			}
		}
		
		System.out.printf("입력받은 수 중 가장 큰 수는 %d 입니다. \n", max);
        
        
	}

}
 

Tip - ex) if 절안에서 변수를 선언하면 그 변수를 포함한 if {괄호} 밖에서는 사용할 수 없다.

      - 같은 변수는 한 번 더 선언할 수 없다.


** 실습3 **

/* 3
 문제)점수를 입력받아 90~100점 사이는 'A'이면서 98~100점은 'A+'로 나타내고
   90~93점은 'A-'로 나타내고 94~97점은 'A'로 나타내는 프로그램
 단, 80~83점은 " B-', 84~87점 'B', 88~89점은 'B+'표시로하고 
  A, B를 제외한 나머지는 'c'학접으로 표시함. @점수 입력값은 0~100 이라고 가정한다.
 입력예)점수를 입력하세요.>100
 출력예)당신의 점수는 100점 입니다.
    당신의 학점은 A+입니다.
 
 입력예)점수를 입력하세요.>81
 출력예)당신의 점수는 81점 입니다.
    당신의 학점은 B-입니다.
    
 입력예)점수를 입력하세요.>85
 출력예)당신의 점수는 85점 입니다.
    당신의 학점은 B입니다.
    
 입력예)점수를 입력하세요.>69
 출력예)당신의 점수는 69점 입니다.
    당신의 학점은 C입니다.
 */

import java.util.Scanner;

public class MySample1102 {

	public static void main(String[] args) 
	{
		Scanner scn = new Scanner(System.in);
		
		int score;		//점수
		char grade = ' ', opt = ' ';		//학점, 부호
		
		System.out.println("점수를 입력하세요.>");
		score = scn.nextInt();
		
		System.out.println("당신의 점수는 " + score + "입니다.");
		
		if (score >= 80)
		{
			if(score < 90)
			{
				grade = 'B';
				
				if(score <= 83 )
				{
					opt = '-';
				}
				else if(score <= 87 )
				{
					opt = ' ';
				}
				else
				{
					opt = '+';
				}
			}	
			else
			{
				grade = 'A';
						
				if(score <= 93 )
				{
					opt = '-';
				}
				else if(score <= 97 )
				{
					opt = ' ';
				}
				else
				{
					opt = '+';
				}
			}
		}
		
		else
		{
			grade = 'C';
		}		
		System.out.printf("당신의 학점은 %s%s입니다.",grade, opt);
	
		
	// 다른 풀이
		
		int score;		//점수
		char grade = ' ', opt = ' ';		//학점, 부호
		
		System.out.println("점수를 입력하세요.>");
		score = scn.nextInt();
		
		System.out.println("당신의 점수는 " + score + "입니다.");	
		
		if(score >= 90)
		{
			grade = 'A';
					
			if(score >= 98)
			{
				opt = '+';
			}
			else if(score <= 93)
			{
				opt = '-';
			}
			else
			{
				opt = ' ';
			}
		}
		else if(score >= 80)
		{
			grade = 'B';
			
			if(score >= 88)
			{
				opt = '+';
			}
			else if(score <= 83)
			{
				opt = '-';
			}
			else
			{
				opt = ' ';
			}
		}
		else
		{
			grade = 'C';
			opt = ' ';
		}
		
		
		if(opt == ' ')
		{
			System.out.printf("당신의 학점은 %c입니다. \n", grade);
		}
		else
			{
			System.out.printf("당신의 학점은 %c%c입니다. \n", grade, opt);
            System.out.printf("grade 숫자 %d, 값: %c \n", 
					Integer.valueOf(grade), grade);		//유일하게 char타입은 영문자는 아스키코드와 일치된다.(?)  (Integer.valueOf)
            
	}

}

** 조건문 (switch) **


switch(조건식)      // 조건식을 계산한 값을 분기

{
case 값1:       //값에 변수,실수 불가(문자열 리터럴 가능 JDK1.7부터)
                  //조건식의 결과와 값1이 같은 경우 실행
break;
case 값2:       
                  //조건식의 결과와 값2이 같은 경우 실행
break;
default:
                  //조건식의 결과와 일치하는 경우가 없을 경우 실행
break;
}
 
- break가 없으면 {}끝날때까지 실행
 
Tip - 모든 swich문은 if문으로 표현 간능 (반대는 모두 가능하지는 않음)

 


//** 실습 4 (간단한 예제) <switch~case문>

import java.util.Scanner;

public class MySample1102 {

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

//** switch~case 문

//** 실습 4 (간단한 예제)
			int a =3;
			
			switch(a)
			{
				case 3:
					System.out.println("3 입니다.");
					break;			//break;가 없으면 "default 입니다."까지 출력된다. break는 본인을 감싸고 있는 첫번째 중괄호밖을 빠져나감
				default:
					System.out.println("default 입니다.");
			}

			int a = 2;
			switch(a)
			{
				default:
					System.out.println("default 입니다.");			
				case 3:
					System.out.println("3 입니다.");
//					break;			// "default 입니다." / "3 입니다." 모두 출력됨 default가 마지막에오는경우만 break안써도 된다.
									
			}

//switch~case 문
		
			int a = 5;
			
			switch(3)
			{
				case 1:
					System.out.println("1 입니다.");
					break;
				case 2:
					System.out.println("2 입니다.");
					//break;
				case 3:
					System.out.println("3 입니다.");
					//break;
				default:
					System.out.println("default 입니다.");
			}
            
	}

}

 

** 실습5 **
/* 5
 문제)현재월을 입력받아 계절을 출력하는 프로그램 작성.

 입력예)현재 월을 입력하세요.>11
 출력예)현재 계절은 가을입니다.

 단, 3,4,5 : 봄 . 6,7,8 : 여름 / 9,10,11 : 가을 / 12,1,2, :겨울
   입력값은 1~12사이 (아닐경우 '월을 잘못입력하셨습니다.')
*/

import java.util.Scanner;

public class MySample1102 {

	public static void main(String[] args) 
	{
		Scanner scn = new Scanner(System.in);
		
		System.out.print("현재 월을 입력하세요.>");
		int month = scn.nextInt();
		
			switch(month)
			{
				case 1:
					System.out.println("현재 계절은 겨울입니다.");
					break;
				case 2:
					System.out.println("현재 계절은 겨울입니다.");
					break;
				case 3:
					System.out.println("현재 계절은 봄입니다.");
					break;
				case 4:
					System.out.println("현재 계절은 봄입니다.");
					break;
				case 5:
					System.out.println("현재 계절은 봄입니다.");
					break;
				case 6:
					System.out.println("현재 계절은 여름입니다.");
					break;
				case 7:
					System.out.println("현재 계절은 여름입니다.");
					break;
				case 8:
					System.out.println("현재 계절은 여름입니다.");
					break;
				case 9:
					System.out.println("현재 계절은 가을입니다.");
					break;
				case 10:
					System.out.println("현재 계절은 가을입니다.");
					break;
				case 11:
					System.out.println("현재 계절은 가을입니다.");
					break;
				case 12:
					System.out.println("현재 계절은 겨울입니다.");
					break;
				default:
					System.out.println("월을 잘못입력하셨습니다.");
			}
			
			// 위 문제를 줄이는 방법
			
			System.out.print("현재 월을 입력하세요.>");
			int month = scn.nextInt();
			
				switch(month)
				{
					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;
					case 12:
					case 1:
					case 2:
						System.out.println("현재 계절은 겨울입니다.");
						break;					
					default:
						System.out.println("월을 잘못입력하셨습니다.");
				}
				
		
		// 위 문제(switch)를 if문으로 변경
		
		System.out.print("현재 월을 입력하세요.>");
		int month = scn.nextInt();
		
		if(month == 3 || month == 4 || month == 5)
		{
			System.out.println("현재 계절은 봄입니다.");
		}	
		else if(month == 6 || month == 7 || month == 8)
		{
			System.out.println("현재 계절은 여름입니다.");
		}
		else if(month == 9 || month == 10 || month == 11)
		{
			System.out.println("현재 계절은 가을입니다.");
		}
		else if(month == 12 || month == 1 || month == 2)
		{
			System.out.println("현재 계절은 봄입니다.");
		}
		else {
			System.out.println("월을 잘못입력하셨습니다.");
		}
        
	}

}

** 실습6 **

 

/* 6
 문제)아래의 메뉴에서 선택한 메뉴를 알려주는 프로그램.
 단, 해당 숫자 이외에 값을 입력받을 경우 "잘못 입력하셨습니다."라는 메세지 출력
 
 입력예)1.추가
    2.수정
    3.삭제
    메뉴번호를 선택하세요.>2


 출력예)수정을 선택하셨습니다.


 단, switch case문에서는 '추가를', '수정을', '삭제를', '잘못'에 해당하는 문자열
  만 출력하고 최종 한번만 "선택하셨습니다."를 출력하는 프로그램.
 */

		
		System.out.println("1.추가");					//System.out.println("1.추가\r\n" + "2.수정\r\n" + "3.삭제\r\n" + "메뉴번호를 선택하세요.>"); 도 가능
		System.out.println("2.수정");
		System.out.println("3.삭제");
		System.out.print("메뉴번로를 선택하세요.>");
		
		int num = scn.nextInt();
		
		switch(num) {
			case 1:
				System.out.print("추가를");
				break;
			case 2:
				System.out.print("수정을");
				break;
			case 3:
				System.out.print("삭제를");
				break;
			default:			
				System.out.print("잘못");
		}
		
		System.out.println(" 선택하셨습니다.");

** 실습7 **

 

/* 7
 switch문 사용
 문제)점수를 입력받아 학점을 출력하는 프로그램
   점수는 90~100 : 'A', 80~89 : 'B', 70~79 : 'C', 나머지는 'F'로 정의
   (char타입에 memo변수 사용)
   입력예)당신의 점수를 입력하세요.(1~100)>82
   출력예)당신의 학점은 'B'입니다.
 */

import java.util.Scanner;

public class MySample1102 {

	public static void main(String[] args) 
	{
		Scanner scn = new Scanner(System.in);
		
		char memo = ' ';
		int score;
		
		System.out.print("당신의 점수를 입력하세요.>");
		score = scn.nextInt();
		
		switch (score/10) {
			case 10:
			case 9:
				memo = 'A';
				break;
			case 8:
				memo = 'B';
				break;
			case 7:
				memo = 'C';
				break;
			default:
				memo = 'F';
		} 
		
		System.out.printf("당신의 학점은 %s입니다.", memo);
        
	}

}

 


제어문 -> 반복문 중 for

 

** for 문 (for, 다중 for) **

 

* 문법

for(①초기식; ②조건식, 증감식)

{

        ③반복 실행될 문장(실행문);

}

 

// 초기식 - for 문 들어왔을때 한번만 실행

// 조건식 - (T/F) True

// 실행문 - 조건식이 True일 경우에 수행, False 경우 ⑥으로 반복문 빠져나간다.

// 누적되는 변수는 밖에서 초기값 설정 해야한다.

// 초기식,조건식,증감식은 경우에 따라 생략이 가능하지만 ; ; 는 생략 불가

// ① .초기식 → ② . 조건식 (t / f) → ③ .실행문 →   .증감식 → ② .조건식 → ③ .실행문 → .증감식 → ② .조건식(F) → ⑥

 

사용법 예제)

int i, sum = 0;

for(i = 1;i<=5;i++)

{  //1~5까지 합

    sum += i;

    System.out.printf("%d %d", i, sum);

}

 

// printf 결과값 => 5  15

// for문 밖에서 i 값을 출력하면 = 6 이 나온다.


// ** 반복제어문 for문 **

 

// 예제)

		// 예제)
		
		int i, sum = 0;
		
		for(i = 1;i <=5;i++)
		{
			sum += i;			// 의미 => sum = sum + i;
			System.out.println("i=" + i + ", sum" + sum);
		}
		
		System.out.println("for문 끝.");
		System.out.println("i=" + i + ", sum" + sum);

 

결과

i=1, sum1
i=2, sum3
i=3, sum6
i=4, sum10
i=5, sum15
for문 끝.
i=6, sum15

 

 


** 실습8 **

/* 8
 문제)1부터 10까지의 함을 구하고 출력하는 프로그램
 출력예)55
 단, for문으로 적용
 */

		int a, sum = 0;
		
		for (a = 1; a <= 10; a++)
		{
			sum += a  ;
		}
		
		System.out.println(sum);

 

 

 


** 실습9 **

/* 9
 문제)1이상 10이하의 정수를 입력받아 입력받은 정수만큼 반복하며 'JAVA프로그래밍'이라고 출력하는 프로그램
 입력예)3
 출력예)JAVA프로그래밍
 */

		int i = scn.nextInt();
		int j;
		
		for (j = 1;j <= i;j++)			// 초기식에 int j = 1; 로 for문에서 선언을 해도 되지만 그렇게되면 for문 밖에서는 사용 할 수 없다.
		{
			System.out.println("JAVA프로그래밍");
		}

 

 


** 실습10 **

/* 10
 문제)문자를 입력받아서 입력받은 문자를 20번 반복하여 출력하는 프로그램
 단, 입력받을때 char a = scn.nextLine().charAt(0);  // char 문자를 받을 때 맨 앞에 숫자 하나만 받겠다는 의미
 입력예)A
 출력예)AAAAAAAAAAAAAAAAAAAA
 */

		char a = scn.nextLine().charAt(0);
		int i;
		
		for (i=1;i<=20;i++)
		{
			System.out.print(a);
		}

 

 

 

 

 

'수업끄적끄적_7MONTH > Java' 카테고리의 다른 글

11/07 수업 (7일차)  (1) 2023.11.07
11/06 수업 (6일차)  (0) 2023.11.06
11/01 수업 (3일차)  (0) 2023.11.05
10/31 수업 (2일차)  (0) 2023.11.05
10/30 수업 (1일차)  (0) 2023.11.05

+ Recent posts