Java

[Java] Java 예제 풀이 (1)

haehyun 2021. 10. 18. 18:51
728x90

화씨(Fahrenheit)를 섭씨(Celcius)로 변환하기

- Math.round() 메소드 없이 반올림 값 구하기 / 소수점 몇자리 아래 자르기

public class Exercise3_7 {

	public static void main(String[] args) {
		int fahrenheit = 100;
		float celcius = (int)(((float)5/9*(fahrenheit-32)*100)+0.5f)/100f;
		
		System.out.println("Fahrenheit : "+fahrenheit);
		System.out.println("Celcius : "+celcius);
	}
}
  1. 반올림하고 싶은 자리를 소수점 바로 뒤에 오도록 이동 (*10, *100, *1000등 10의 제곱수를 곱해 자리수 이동)
    ※ 반올림 대상 값은 float, double등 실수형일 것. 산술과정에서 double타입 리터널에 의한 산술변환 주의 
  2. 그 상태에서 +0.5를 하면, 소수점 뒤자리가 5보다 작을 경우는 소수점 앞자리가 그대로 유지(=내림), 
    5보다 클경우는 자리올림이 발생해 소수점 앞자리가 +1 증가한다(=올림)
  3. int형으로 캐스팅하여 반올림후 필요없는 뒷자리는 버리기
  4. 정수 상태의 값을 처음 소수점위치로 이동 (/10, /100, /1000등 첫번째 과정에서 곱했던 수로 나눠서 자리 원복)

 

가위바위보 게임

- Math.random 메소드 사용 / 특정 범위 내 난수 얻기

import java.util.*;

public class FlowEx7 {

	public static void main(String[] args) {
		System.out.print("가위(1), 바위(2), 보(3) 중 하나를 입력하세요.>");

		Scanner scan = new Scanner(System.in);
		int user = scan.nextInt(); 			// 사용자 입력 값
		int com = (int) (Math.random() * 3) + 1; 	// 1~3 범위 내 난수 값

		System.out.println("당신은 " + user + " 입니다.");
		System.out.println("컴퓨터는 " + com + " 입니다.");
		
		switch(user-com) {
			case 2: case -1:
				System.out.println("당신이 졌습니다.");
				break;
			case 1: case -2:
				System.out.println("당신이 이겼습니다.");
				break;
			case 0:
				System.out.println("비겼습니다.");
				break;
		}
	}
}

 

별 피라미드 그리기

- 중첩 반복문

import java.util.*;

public class FlowEx17 {

	public static void main(String[] args) {
		System.out.print("*을 출력할 라인의 수를 입력하세요.>");
		Scanner scan = new Scanner(System.in);
		int num = scan.nextInt();
		
		for(int i=1; i<=num; i++) {		//몇줄?
			for(int j=1; j<=i; j++) {	//몇개?
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

 

숫자맞추기 게임

- do~while문 : 반드시 최소 한번은 반복문 내 문장 실행

import java.util.*;

public class FlowEx28 {

	public static void main(String[] args) {
		int input = 0, answer = 0;

		Scanner scanner = new Scanner(System.in);
		answer = (int) (Math.random() * 100) + 1;
		
		do {
			System.out.print("1부터 100사이의 정수를 입력하세요.>");
		    input = scanner.nextInt();
		    
		    if(input>answer) {
		    	System.out.println("Down");
		    }else if(input < answer) {
		    	System.out.println("Up");
		    }
		} while(input!=answer);

		System.out.println("정답!");
	}
}

 

369게임

- 중첩 반복문, 정수 자리수 자르기
어느 정수든 10의 자리수는 10*n의 값. (n은 10의 자리에 있는 정수 값)
n의 자리수 까지의 값 추출하기 : 전체값을 n으로 나눈 몫
ex) 3600/10=360 → 360/10=36 → 36/10=3. 
    1560/1000=1.  1560/100=15.  1560/10=156.

public class FlowEx29 {

	public static void main(String[] args) {
		for (int i = 1; i <= 100; i++) {
			System.out.printf("i=%d ", i);

			int tmp = i;
			
			do {
				//1의 자리 수 떼어서 3의 배수인지 확인
				if(tmp%10%3==0 && tmp%10!=0) {
					System.out.print("짝");
				}
			//모든 작업은 위에서 수행됨. 값이 1의 자리만 남았을 경우, 자리수 떼기 종료 (1의 자리수를 하나씩 떼어가며 369확인)
			} while((tmp/=10)!=0);
			System.out.println();
		}
	}
}

 

(추가예정)-----------------------------


  • 예제 출처 : Java의 정석 3rd / 남궁 성 / 도우출판
728x90