자바 4일차

선장원·2021년 10월 6일

자바

목록 보기
4/24

자바 4일차

오늘은 뭔가 복습을 엄청해서 복습보다 백준 알고리즘 문제를 더 많이 푼 느낌이다

if 문 복습

학점 계산해보기

		// 학점 계산 예제
		/*
		 * 점수를 하나 입력 받아서 학점을 출력하는 예제
		 * 90~100 : A
		 * 80~89 : B
		 * 70~79 : C
		 * 60~69 : D
		 * 59이하 : F
		 */
		
		Scanner scan = new Scanner(System.in);
		
		
		int num1 = 0;
		System.out.print("점수 : ");
		num1 = scan.nextInt();
		
		if (num1 >=90 && num1 < 101 ) {
			System.out.println("A");
		} else if (num1 >= 80 && num1 < 101) {
			System.out.println("B");
		} else if (num1 >= 70 && num1 < 101) {
			System.out.println("C");
		} else if (num1 >= 60 && num1 < 101) {
			System.out.println("D");
		} else if (num1 >= 0 && num1 < 101) {
			System.out.println("F");
		} else {
			System.out.println("0보다 작거나 100보다 큼");
		}

		// 중첩으로 해도 될듯 중첩으로 하는게 더 깔끔하네
		if (num1 < 100 && num1 > 0) {
			if (num1 >= 90) {
				System.out.println("A");
			} else if (num1 >= 80) {
				System.out.println("B");
			} else if (num1 >= 70) {
				System.out.println("C");
			} else if (num1 >= 60) {
				System.out.println("D");
			} else {
				System.out.println("F");
			}
		} else {
			System.out.println("다시 입력해라");
		}

위 코드를 출력문을 하나만 써서 코드를 만들기

// A ~ F 를 출력하는 출력문을 딱 하만 쓰는 코드로 변경해 보세요.
		// 90~94 : A0, 95~100 : A+
		String var1 = "";
		if (num1 < 100 && num1 > 0) {
			if (num1 >= 90) {
				if (num1 >= 95) {
					var1 = "A+";
				} else {
					var1 = "A0";
				}
//				var1 = "a";
			} else if (num1 >= 80) {
				var1 = "b";
			} else if (num1 >= 70) {
				var1 = "c";
			} else if (num1 >= 60) {
				var1 = "d";
			} else {
				var1 = "f";
			}
		} else {
			var1 = " 다시 입력해라 ";
		}
		System.out.println("학점 : " + var1);

공배수 구별하기

		// 정수를 하나 입력 받아 입력 받은 정수가 3의 배수인지 5의 배수인지 3과 5의 공배수인지
		// 아니면 3의 배수도 5의 배수도 아닌지 출력하느 코드를 작성하세요
		
		Scanner scan = new Scanner(System.in);
		
		int num1 = 0;
		System.out.print("정수 : ");
		num1 = scan.nextInt();
		
		String result1 = "";
		if (num1 > 0) {
		if (num1 % 3 == 0 && num1 % 5 == 0 ) {
			result1 = "3과 5의 공배수";
		} else if (num1 % 3 == 0) {
			result1 = "3의 공배수";
		} else if (num1 % 5 == 0 ) {
			result1 = "5의 공배수";
		} else {
			result1 = "둘 다 아님";
		}
		} else {
			result1 = "0보다 큰 수를 입력하세요";
		}
		
		System.out.println("값은 : " + result1);

학력과 점수로 합격 불합격 구별

		/*
		 * 합격, 불합격 판단
		 * 
		 * 학년, 점수를 각각 입력 받고 합격/ 불학격을 판단한다
		 * 조건 
		 * 1~3학년 : 점수가 60점 이상일 때 합
		 * 4학년 : 점수가 70점 이상일 때 합격
		 * 위 두조건 을 만족 하지 않을 때는 불합격
		 */
		
		Scanner scan = new Scanner(System.in);
		int age = 0, score = 0;
		
		System.out.print("학년 : ");
		age = scan.nextInt();
		
		System.out.print("점수 : ");
		score = scan.nextInt();
		
		String result1 = ""; // 합불
		
		if (age >=1 && age <=3) {
			if (score >= 60 && score <=100) {
				result1 = "합격";
			} else if (score < 60 && score <=100){
				result1 = "불합격";
			} else {
				result1 = "점수 오류";
			}			
		} else if (age == 4) {
			if (score >= 70 && score <=100) {
				result1 = "합격";
			} else if (score < 70  && score <=100) {
				result1 = "불합격";
			} else {
				result1 = "점수 오류";
			}
		} else {
			result1 = "학년 오류";
		}
		
		System.out.println(age + "학년 " + result1 + "입니다.");

###큰 숫자 찾기

		/*
		 * 서로 다른 숫자 3개를 각각 입력 받아 가장 큰 숫자 출력하기
		 * 같은 숫자는 입력하지 않는다고 가정
		 */
		Scanner scan = new Scanner(System.in);
		int num1 = 0, num2 = 0, num3 = 0;
		System.out.print("1번 : ");
		num1 = scan.nextInt();
		System.out.print("2번 : ");
		num2 = scan.nextInt();
		System.out.print("3번 : ");
		num3 = scan.nextInt();
		
		
		if (num1 > num2 && num1 > num3) {
			System.out.println(num1);
		} else if (num2 > num1 && num2 > num3) {
			System.out.println(num2);
		} else if (num3 > num1 && num3 > num1) {
			System.out.println(num3);
		}

나중에 배열(?)이라는 것을 배우면 더 많은 숫자를 한번에 정리 할 수 있다.

최댓값을 담는 변수를 하나 추가해서 중첩 if문 활용

		// 최댓값을 담는 변수를 하나 추가 하여 중첩 if문 활용하는 방법
		int max = 0;
		if (num1 > num2) {
			if (num1 > num3) {
				max = num1;
			} else {
				max = num3;
			}
		} else {
			if (num2 > num3) {
				max = num2;
			} else {
				max = num3;
			}
		}
		System.out.println("가장 큰 수는 " + max +"입니다.");

switch case문

switch (조건용 변수) {
	case 변수값1:
    	실행내용
        break;
    case 변수값2:
    	실행내용
        break;
    case 변수값3:
    	실행내용
        break;
    default:
    	일치하는 값이 하나도 없을 때 실행
        break;

}
  • 스위치 케이스는 실행을 했을 때 1~4번을 선택하는 옛날에 마우스가 없던 시절처럼?
  • 스위치 케이스는 한계가 많아서 잘 안쓴다.
  • 케이스가 끝날 때 break;를 써준다
  • break;를 안 넣으면 브레이크를 만날 때까지의 숫자를 출력
  • 변수 값을 다른 타입으로 해도 조건용 변수와 변수값이 같은 타입이라면 가능하다.

간단한 단어사전 만들기

		/*
		 * 간단한 사전
		 * 이 사전에는 딱 4개의 단어만 들어 잇음.
		 * desk(책상), chair(의자), monitor(모니터), mouse(마우스)
		 * 
		 * 프로그램을 실행 하면 영어 단어를 입력 받고 위의 네 단어중 하나르 입력했을 때 해당 의미를 출력해줌.
		 * 사정에 없는 단어를 입력하면 사전에 없는 단어 입니다 라고 출력
		 * 
		 */
		Scanner scan = new Scanner(System.in);
		
		String var1 = "";
		System.out.print("단어를 입력하세요 : ");
		var1 = scan.next();
		
		switch (var1) {
			case "desk":
				System.out.println("책상입니다");
				break;
			case "chair":
				System.out.println("의자입니다");
				break;
			case "monitor":
				System.out.println("모니터입니다");
				break;
			case "mouse":
				System.out.println("마우스입니다");
				break;
			default:
				System.out.println("일치하는 단어가 없습니다.");
				break;
				
		}

반복문

  • 어떠한 조건에서 동일한 코드를 반복해서 실행할 때
  • 특정 조건을 도달할 때까지 반복해서 실행 할 때
  • 반복문에는 반복 조건, 반복 종료조선 등이 필요함
  • 반복문 종류
    1. for, foreach(향상된 for문, advanced for), while, do ~ while

for문

for (반복 변수(i) 초기화; 반복변수 종료조건; 반복변수 증감식) {
	반복 실행 문장
}

나는 반복 실행 문장에 i가 무조건 들어가야하는줄 알았는데
i가 없이도 그냥 돌아가는거 였다!
멍청했다

for문을 이용하여 1부터 5까지 출력

		/*
		 * 1부터 5까지 각각 다른중에 출력하는 코드를 작성해보세요
		 * 
		 * 
		 * 
		 */
		for (int i = 1; i <= 5; ++i) {
			System.out.println(i);
		}

백준 알고리즘에서 for문에서 막혔는데 다행히 수업들으니 이해가 된다.
이제 내일 for문 연습하고 백준 알고리즘 for문까지 해야겠다.
내일 while까지는 알려주겠지

수업중 꿀팁

sysout + 컨트롤 + 스페이스 를 같이 누르면
System.out.println(); 이 자동으로 나온다
ln은 자동으로 붙으니 지울 때는 지워서 사용하자

중첩을 많이 해도 괜찮긴하지만 가독성이 별로 안좋다

아직까지는 이해가 잘 되고 잘 따라가고 있어서 다행이다.
오늘 상담도 했는데 잘하고 있고 그대로 하기만 하면 괜찮을 것같다고 하셨다.
개발자 친구도 있고 해서 더 자세한 얘기는 안 하신 것같다.

profile
코딩도전기

0개의 댓글