Java 초급 (46)

반응형

 

조건문

 

: 조건 식에 따라 다른 실행문을 실행하기 위해 사용된다.

ex) if 문 , if - else 문, if - else if - else 문, switch 문

 

 

 

if 문

 

: 조건식 결과에 따라 실행 여부가 결정된다.

 

if 문 로직

 

사용법은 아래와 같다.

 

if (조건식) {
	실행문;
	실행문;
}

 

package kr.or.ddit.study04;

import java.util.Scanner;

public class IfExample2 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		IfExample2 obj = new IfExample2();
		obj.method1();
	}
	
	public void method1() {
		// 점수를 입력 받고 학점을 출력 하시오.
		// 90 이상 A, 80이상 B, 70이상 C, 60이상 D, 60 미만 F
		int score = sc.nextInt();
		
		if(score >= 90) {
			System.out.println("A 학점");
		}
		if(score >= 80) {
			System.out.println("B 학점");
		}
		if(score >= 70) {
			System.out.println("C 학점");
		}
		if(score >= 60) {
			System.out.println("D 학점");
		}
		if(score < 60) {
			System.out.println("F 학점");
		}
	}
}

 

 

 

if - else 문

 

: 조건식 결과에 따라 실행 여부가 선택된다.

 

if - else 문 로직

 

사용법은 아래와 같다.

 

if (조건식) {
	실행문;
	실행문;
}
else if (조건식) {
	실행문;
	실행문;
}
else {
	실행문;
	실행문;
}

 

 

 

if - else if - else 문

 

: 조건식이 여러개인 if 문

 

if - else if - else 문 로직

 

사용법은 아래와 같다.

 

if (조건식) {
	실행문;
	실행문;
}
else if (조건식) {
	실행문;
	실행문;
}
else if (조건식) {
	실행문;
	실행문;
}
else {
	실행문;
	실행문;
}

 

package kr.or.ddit.study04;

import java.util.Scanner;

public class IfExample2 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		IfExample2 obj = new IfExample2();
		// if문 예시와 method2, method3 셋 다 같은 방법
		obj.method2();
		obj.method3();
		
		obj.method4();
	}
	
	public void method2() {
		// 점수를 입력 받고 학점을 출력 하시오.
		// 90 이상 A, 80이상 B, 70이상 C, 60이상 D, 60 미만 F
		int score = sc.nextInt();
		
		if(score >= 90) {
			System.out.println("A 학점");
		} else if(score >=80) {
			System.out.println("B 학점");
		} else if(score >=70) {
			System.out.println("C 학점");
		} else if(score >=60) {
			System.out.println("D 학점");
		} else {
			System.out.println("F 학점");
		}
	}
	
	public void method3() {
		// 점수를 입력 받고 학점을 출력 하시오.
		// 90 이상 A, 80이상 B, 70이상 C, 60이상 D, 60 미만 F
		int score = sc.nextInt();
		
		if(score >= 90) System.out.println("A 학점");
		else if(score >=80) System.out.println("B 학점");
		else if(score >=70) System.out.println("C 학점");
		else if(score >=60) System.out.println("D 학점");
		else System.out.println("F 학점");
	}
	
	public void method4() {
		// 점수를 입력 받고 학점을 출력 하시오.
		// 90 이상 A, 80이상 B, 70이상 C, 60이상 D, 60 미만 F
		// 0 ~ 3점  -
		// 4 ~ 6  0
		// 7 ~ 9  +
		String grade = "";
		int score = sc.nextInt();
		int end = score % 10;
		
		if(score == 100) grade = "A+";
		else if(score >= 90) grade = "A";
		else if(score >=80) grade = "B";
		else if(score >=70) grade = "C";
		else if(score >=60) grade = "D";
		else grade = "F";

		if(score != 100 && score >= 60) { // if문 안에 if문을 쓸 수 있다.
			if(0 <= end && end <= 3) grade += "-";
			if(4 <= end && end <= 6) grade += "0";
			if(7 <= end && end <= 9) grade += "+";
		}
		
		System.out.println(grade + " 학점");
	}
}

 

 

 

switch 문

 

: 변수가 어떤 값을 갖는지에 따라 실행문을 선택한다.

if 문이 3개 이상 사용될 때는 switch문이 더 효과적이다.

 

switch 문 로직

 

사용법은 아래와 같다.

 

switch (변수) {
		case 값1:
			실행문;
			break;
		case 값2:
			실행문;
			break;
		default:
			실행문;
			break;
		}

 

package kr.or.ddit.study04;

import java.util.Scanner;

public class SwitchExample {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		SwitchExample obj = new SwitchExample();
		obj.method1();
	}
	
	public void method1() {
		int sel = 2;
		
		switch (sel) {
		case 1:
			System.out.println("1번");
			break;
		case 2:
			System.out.println("2번");
			break; // break을 걸지 않으면 아래 문장이 실행된다.
		default:
			System.out.println("1, 2번 외의 값");
			break;
		}
	}
}

 

결과 화면1

 

package kr.or.ddit.study04;

import java.util.Scanner;

public class SwitchExample {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		SwitchExample obj = new SwitchExample();
		obj.method2();
	}
    
	public void method2() {
		String nation = "kor";
		
		switch (nation) {
		case "kor": // nation이 String 이기에 case 들어오는 것도 String 이어야 함.
			System.out.println("한국");
			break;
		case "eng":
			System.out.println("영국");
			break;
		case "jpn":
			System.out.println("일본");
			break;
		default:
			System.out.println("잘못 입력하셨습니다.");
			break;
		}
	}
}

 

결과 화면2

 

package kr.or.ddit.study04;

import java.util.Scanner;

public class SwitchExample {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		SwitchExample obj = new SwitchExample();
		obj.method3();
	}
    
	public void method3() {
		// 끝자리가 31일인 달
		// 끝자리가 30일인 달
		// 끝자리가 28, 29인 달.
		
		int month = 2;
		
		switch (month) {
		case 1: case 3: case 5: case 7: case 8: case 10: case 12:
			System.out.println("31일로 끝납니다.");
			break;
		case 4: case 6: case 9: case 11:
			System.out.println("30일로 끝납니다.");
			break;
		case 2:
			System.out.println("28, 29일로 끝납니다.");
			break; // break 문이 없을 시 case 2을 탈 시 잘못 입력 되었습니다 까지 같이 출력됨
		default:
			System.out.println("잘못 입력 되었습니다.");
			break;
		}
	}
}

 

결과 화면3

 

package kr.or.ddit.study04;

import java.util.Scanner;

public class SwitchExample {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		SwitchExample obj = new SwitchExample();
		obj.method4();
	}
	public void method4() {
		// 점수를 입력 받고 학점을 출력 하시오.
		// 90 이상 A, 80이상 B, 70이상 C, 60이상 D, 60 미만 F
		// 0 ~ 3점  -
		// 4 ~ 6  0
		// 7 ~ 9  +
		String grade = "";
		int score = sc.nextInt();
		
		int fir = score / 10; // 10의 자리
		int end = score % 10; // 1의 자리
		
		switch (fir) {
		case 10: 
			grade = "A+";
			break;
		case 9:
			grade = "A";
			switch (end) {
			case 7: case 8: case 9:
				grade += "+";
				break;
			case 6: case 5: case 4:
				grade += "0";
				break;
			case 3: case 2: case 1:
				grade += "-";
				break;
			default:
				break;
			}
			break;
		case 8:
			grade = "B";
			switch (end) {
			case 7: case 8: case 9:
				grade += "+";
				break;
			case 6: case 5: case 4:
				grade += "0";
				break;
			case 3: case 2: case 1:
				grade += "-";
				break;
			default:
				break;
			}
			break;
		case 7:
			grade = "C";
			switch (end) {
			case 7: case 8: case 9:
				grade += "+";
				break;
			case 6: case 5: case 4:
				grade += "0";
				break;
			case 3: case 2: case 1:
				grade += "-";
				break;
			default:
				break;
			}
			break;
		case 6:
			grade = "D";
			switch (end) {
			case 7: case 8: case 9:
				grade += "+";
				break;
			case 6: case 5: case 4:
				grade += "0";
				break;
			case 3: case 2: case 1:
				grade += "-";
				break;
			default:
				break;
			}
			break;
		default:
			grade = "F";
			break;
		}
		
		System.out.println(grade + " 학점");
	}
}

 

결과 화면4

 

반응형

'자바' 카테고리의 다른 글

[Java 초급] 7장 반복문 for문  (0) 2023.12.08
[Java 초급] 6.5장 테스트  (0) 2023.12.08
[Java 초급] 5.5.2장 테스트2  (2) 2023.12.07
[Java 초급] 5.5.1장 테스트  (0) 2023.12.06
[Java 초급] 5장 단항, 이항, 삼항 연산자  (0) 2023.12.06
반응형

 

문제

 

아래의 문제들을 풀어 출력하시오.

 

package kr.or.ddit.study02;

import java.util.Scanner;

public class VariableTest {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		VariableTest obj = new VariableTest();
		obj.method1();
		obj.method2();
		obj.method3();
		obj.method4();
		obj.method5();
	}
	private void method1() {
		// 기본타입을 각각 선언해보고 갑을 저장 할 것
		// 8가지  
		// System.out.println 을 이용해서 출력까지 해보자.
		
		// 정수형 byte ~
		
		// 바이트 = 8bit 프로그램 기본단위로 많이 사용  
	}

	private void method2() {
		/*
		 *  각 데이터를 형변환 하고 출력 하시오.
		 */
		// char -> int 
		
		// int -> char 
		
		// int -> double
		
		// int 값 변수 a,b 를 나누기 연산후 double로 저장
		
		// char -> String
		
		// c3_1 + c3_2 값을 문자열에 저장
		
		char c3_1 ='a';
		char c3_2 ='b';
	}
	
	private void method3() {
		// Math.random
		// 0~0.9999999999999999 범위 값.
		// *10은 범위 값  +1은 시작 값.
		// (int)(Math.random()*10)+1
		
//		int ran = (int)(Math.random()*100)+1;
//		System.out.println(ran);
		
		/*
		 * 양꼬치는 1인분에 12000원 음료수는 2000원 입니다. 
		 * 양꼬치 n개와 음료수 k 를 먹었다면 총 얼마를 지불해야 하는지 
		 * 출력해보세요.
		 * n 값은 1~10 
		 * k 값은 1~3
		 */
		
		int n = (int)(Math.random()*10)+1;
		int k = (int)(Math.random()*3)+1;
		
		//결과값 저장 할 곳
		int result = ?;
	}
	
	private void method4() {
		/*
		 * 정수 num1, num2 랜덤한 변수(1~50)로 주어질때
		 * num1을 num2로 나눈 나머지와 몫을 출력하세요.
		 */
		int num1 = (int)(Math.random()*50)+1;
		int num2 = (int)(Math.random()*50)+1;
		
		// 몫  : 정수형 데이터 이기 때문에 소수점 값 자동 생략됨.
		
		// 나머지 
		
	}
	private void method5() {
		/*
		 * 정수 num1, num2 랜덤한 변수(1~50)로 주어질때
		 * num1을 num2로 나눈 값에 1000을 곱한후 
		 * 정수 부분을 출력 하세요.
		 */
		
		int num1 = 20;//(int)(Math.random()*50)+1;
		int num2 = 14;//(int)(Math.random()*50)+1;

		// 소수점 3자리 출력 하도록 해볼것
		int    result_int =num1*1000/num2;
		double result = (double)result_int/1000;
	}
	
	private void method6() {
		/*
		 * 두 정수에 대한 연산으로 두정수를 붙여서 쓴 값을 출력합니다. 
		 * 예를 들면 다음과 같습니다.
		 * a = 12,  b =3
		 * 12 ☆ 3 = 123
		 * 3  ☆ 12 = 312 
		 * 
		 *  양의 정수 a와 b가 주어졌을때 
		 *  a ☆ b 와 b ☆ a 값중 더 큰값을 출력하세요 
		 */
		int a = (int)(Math.random()*100)+1;
		int b = (int)(Math.random()*100)+1;
		
		
	}
	
}

 

 

 

정답

 

package kr.or.ddit.study02;

import java.util.Scanner;

public class VariableTest {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		VariableTest obj = new VariableTest();
		obj.method1();
		obj.method2();
		obj.method3();
		obj.method4();
		obj.method5();
		obj.method6();
	}
	private void method1() {
		// 기본타입을 각각 선언해보고 갑을 저장 할 것
		// 8가지  
		// System.out.println 을 이용해서 출력까지 해보자.
	
		// 문자형
		char cha = 'A';
		System.out.println("char 타입의 값은 " + cha + "입니다.");

		// 정수형 byte ~
		// 바이트 = 8bit 프로그램 기본단위로 많이 사용
		byte byt = 100;
		System.out.println("byte 타입의 값은 " + byt + "입니다.");
		
		short sh = 10;
		System.out.println("short 타입의 값은 " + sh + "입니다.");
		
		int in = 123;
		System.out.println("int 타입의 값은 " + in + "입니다.");
		
		long lon = 100000000L;
		System.out.println("long 타입의 값은 " + lon + "입니다.");
		
		// 실수형
		double dou = 12.234;
		System.out.println("double 타입의 값은 " + dou + "입니다.");
		
		float flo = 56.78910f;
		System.out.println("float 타입의 값은 " + flo + "입니다.");
		
		// 논리
		boolean boo = true;
		System.out.println("boolean 타입의 값은 " + boo + "입니다.");
	}

	private void method2() {
		/*
		 *  각 데이터를 형변환 하고 출력 하시오.
		 */
		// char -> int 
		char ch = 'A';
		int in = ch;
		System.out.println("char을 int로 형변환한 값은 " + in);
		
		// int -> char
		in = 66;
		ch = (char)in;
		System.out.println("int을 char로 형변환한 값은 " + ch);
		
		// int -> double
		in = 67;
		double dou = in;
		System.out.println("int을 double로 형변환한 값은 " + dou);
		
		// int 값 변수 a,b 를 나누기 연산후 double로 저장
		int a = 16;
		int b = 7;
		double result = (double)a/(double)b;
		System.out.println("int 값 변수 a,b 를 나누기 후 연산된 값은 " + result);
		
		// char -> String
		ch = 'D';
		String str = String.valueOf(ch);
		System.out.println("char을 String로 형변환한 값은 " + ch);
		
		// c3_1 + c3_2 값을 문자열에 저장
		char c3_1 ='a';
		char c3_2 ='b';
		str = "" + c3_1 + c3_2;
//		str = String.valueOf(c3_1);
//		str += String.valueOf(c3_2);
		System.out.println("c3_1과 c3_2의 문자열을 저장한 값은 " + str);
		
		// String -> char
		String s4 = "abc";
		char c4_1 = s4.charAt(0);
		char c4_2 = s4.charAt(1);
		char c4_3 = s4.charAt(2);
	}
	
	private void method3() {
		// Math.random
		// 0~0.9999999999999999 범위 값.
		// *10은 범위 값  +1은 시작 값.
		// (int)(Math.random()*10)+1 // 0부터 9까지에 +1 해서 1부터 10까지의 범위가 된다.
		
//		int ran = (int)(Math.random()*100)+1;
//		System.out.println(ran);
		
		/*
		 * 양꼬치는 1인분에 12000원 음료수는 2000원 입니다. 
		 * 양꼬치 n개와 음료수 k 를 먹었다면 총 얼마를 지불해야 하는지 
		 * 출력해보세요.
		 * n 값은 1~10 
		 * k 값은 1~3
		 */
		
		int n = (int)(Math.random()*10)+1; // 1에서 10까지의 범위
		int k = (int)(Math.random()*3)+1; // 1에서 3까지의 범위
		
		//결과값 저장 할 곳
		int result = n*12000 + k*2000;
		
		System.out.println("양꼬치 " + n + "개와 음료수 " + k + "개를 먹었다.");
		System.out.println("총 가격은 " + result + "이다.");
	}
	
	private void method4() {
		/*
		 * 정수 num1, num2 랜덤한 변수(1~50)로 주어질때
		 * num1을 num2로 나눈 나머지와 몫을 출력하세요.
		 */
		int num1 = (int)(Math.random()*50)+1;
		int num2 = (int)(Math.random()*50)+1;
		
		// 몫  : 정수형 데이터 이기 때문에 소수점 값 자동 생략됨.
		int share = num1/num2;
		System.out.println(num1 + " 나누기 " + num2 + "의 몫은 " + share + "이다.");
		
		// 나머지 
		int remain = (num1%num2);
		System.out.println("나머지는 " + remain + "이다.");
		
//		System.out.printf("num1 : %d , num2 : %d\n", num1, num2);
//		System.out.printf("몫은 : %d , 나머지는 : %d\n", share, remain);
	}
	private void method5() {
		/*
		 * 정수 num1, num2 랜덤한 변수(1~50)로 주어질때
		 * num1을 num2로 나눈 값에 1000을 곱한후 
		 * 정수 부분을 출력 하세요.
		 */
		
		int num1 = (int)(Math.random()*50)+1;
		int num2 = (int)(Math.random()*50)+1;
		
		double resultNum = ((double)num1 / (double)num2) *1000;
		int resultNu = (int)resultNum;
		// int result = num1*1000/num2; // 한줄로 바꾼다면 아래와 같다.
		
		System.out.println("정수 num1의 값은 " + num1 + ", 정수 num2의 값은 " + num2);
		System.out.println("나눈 후 1000을 곱한 정수 부분의 값은 " + resultNu + "이다.");
		
		// 소수점 3자리 출력 하도록 해볼것
		int    result_int =num1*1000/num2; // 1428
		double result = (double)result_int/1000; //1.428
		
		result_int = result_int/1000 * 1000;
		result *= 1000;
		result_int = (int)result - result_int;
		result = result_int / 1000.0;
		
		System.out.println("소수점 3자리는 " + result + "이다.");
	}
	
	private void method6() {
		/*
		 * 두 정수에 대한 연산으로 두정수를 붙여서 쓴 값을 출력합니다. 
		 * 예를 들면 다음과 같습니다.
		 * a = 12,  b =3
		 * 12 ☆ 3 = 123
		 * 3  ☆ 12 = 312 
		 * 
		 *  양의 정수 a와 b가 주어졌을때 
		 *  a ☆ b 와 b ☆ a 값중 더 큰값을 출력하세요 
		 */
		int a = (int)(Math.random()*100)+1;
		int b = (int)(Math.random()*100)+1;
		
		String ab = "" + a + b;
		String ba = "" + b + a;
		
		int ab_int = Integer.valueOf(ab);
		int ba_int = Integer.valueOf(ba);
		
		int result = ab_int > ba_int ? ab_int : ba_int;
		
		System.out.printf("a의 값은 %d, b의 값은 %d\n", a, b);
		System.out.println("더 큰 값은 " + result);
	}
	
}

 

결과 화면

 

반응형

'자바' 카테고리의 다른 글

[Java 초급] 6.5장 테스트  (0) 2023.12.08
[Java 초급] 6장 조건문  (0) 2023.12.07
[Java 초급] 5.5.1장 테스트  (0) 2023.12.06
[Java 초급] 5장 단항, 이항, 삼항 연산자  (0) 2023.12.06
[Java 초급] 4.5장 테스트  (2) 2023.12.06
반응형

 

문제

 

1. question 변수에 랜덤한 숫자 0~49 숫자가 입력 되어 있다.
if 문 조건식을 완성하여 해당 숫자를 맞추는 프로그램을 완성하시오. 
1번 실행시 cnt 값이 1씩 증가 되어야됨

 

package kr.or.ddit.homework;

import java.util.Random;
import java.util.Scanner;

public class HomeWork3 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		HomeWork3 obj = new HomeWork3();
		obj.question1();
	}
	
	public void question1() {
		/*
		 *  question 변수에 랜덤한 숫자 
		 *           0~49 숫자가 입력 되어 있다.
		 *  
		 *  if 문 조건식을 완성하여 해당 숫자를 맞추는 
		 *  프로그램을 완성하시오. 
		 *  
		 *  1번 실행시 cnt 값이 1씩 증가 되어야됨
		 *  
		 */
		int question = new Random().nextInt(50);
		int cnt = 0; 
		while(true) {
			System.out.println("정수를 입력 하세요.");
			int ans = sc.nextInt();
			
			// 숫자가 클때
			if(?) {
				System.out.println("더 작은수를 입력하세요");
			}
			// 숫자가 작을때
			if(?){
				System.out.println("더 큰수를 입력하세요");
			}
			// 숫자가 같을때
			if(?) {
				System.out.println("정답입니다.");
				break;
			}
		}
		System.out.println("몇 번 시행되었습니다.");
	}
}

 

 

2. 논리 연산자 : && , ||
년도를 입력 받아 윤년과 평년을 판별.
? 안을 완성하여 작성.

4의 배수 윤년     : 1992 1996 2004
100의 배수 평년 : 1700 1800 1900 
400의 배수 윤년 : 1600 2000    

 

package kr.or.ddit.homework;

import java.util.Random;
import java.util.Scanner;

public class HomeWork3 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		HomeWork3 obj = new HomeWork3();
		obj.question2();
	}
    
	public void question2() {
		/* 논리 연산자 : && , ||
		   년도를 입력 받아 윤년과 평년을 판별.
		  ? 안을 완성하여 작성.
			
		  4의 배수 윤년     : 1992 1996 2004
		  100의 배수 평년 : 1700 1800 1900 
		  400의 배수 윤년 : 1600 2000    
		*/
		
		System.out.print("년도 입력 : ");
		int year = sc.nextInt();
		
		if(?) { 
			System.out.println(year + " 년은 윤년입니다.");
		}else {
			System.out.println(year + " 년은 평년입니다.");
		}
	}
	
}

 

 

 

1번 문제

 

package kr.or.ddit.homework;

import java.util.Random;
import java.util.Scanner;

public class HomeWork3 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		HomeWork3 obj = new HomeWork3();
		obj.question1();
	}
	
	public void question1() {
		/*
		 *  question 변수에 랜덤한 숫자 
		 *           0~49 숫자가 입력 되어 있다.
		 *  
		 *  if 문 조건식을 완성하여 해당 숫자를 맞추는 
		 *  프로그램을 완성하시오. 
		 *  
		 *  1번 실행시 cnt 값이 1씩 증가 되어야됨
		 *  
		 */
		int question = new Random().nextInt(50);
		int cnt = 0; 
		while(true) {
			System.out.println("정수를 입력 하세요.");
			int ans = sc.nextInt();
			cnt++;
			// 숫자가 클때
			if(ans > question) {
				System.out.println("더 작은수를 입력하세요");
			}
			// 숫자가 작을때
			if(ans < question){
				System.out.println("더 큰수를 입력하세요");
			}
			// 숫자가 같을때
			if(ans == question) {
				System.out.println("정답입니다.");
				break;
			}
		}
		System.out.println(cnt + "번 시행되었습니다.");
	}
}

 

결과 화면

 

 

 

2번 문제

 

package kr.or.ddit.homework;

import java.util.Random;
import java.util.Scanner;

public class HomeWork3 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		HomeWork3 obj = new HomeWork3();
		obj.question2();
	}
    
	public void question2() {
		/* 논리 연산자 : && , ||
		   년도를 입력 받아 윤년과 평년을 판별.
		  ? 안을 완성하여 작성.
			
		  4의 배수 윤년     : 1992 1996 2004
		  100의 배수 평년 : 1700 1800 1900 
		  400의 배수 윤년 : 1600 2000    
		*/
		
		System.out.print("년도 입력 : ");
		int year = sc.nextInt();
		
		if( ( (year%4 == 0) && (year%400 == 0) ) || !(year%100 == 0) ) {
			System.out.println(year + " 년은 윤년입니다.");
		}else {
			System.out.println(year + " 년은 평년입니다.");
		}
	}
	
}

 

4의 배수 결과 화면

 

100의 배수 결과 화면

 

400의 배수 결과 화면

 

반응형
1 ··· 10 11 12 13 14 15 16