[Java] Java 예제 풀이 (1)

[Java] Java 예제 풀이 (1)

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); } }

반올림하고 싶은 자리를 소수점 바로 뒤에 오도록 이동 (*10, *100, *1000등 10의 제곱수를 곱해 자리수 이동)

※ 반올림 대상 값은 float, double등 실수형일 것. 산술과정에서 double타입 리터널에 의한 산술변환 주의 그 상태에서 +0.5를 하면, 소수점 뒤자리가 5보다 작을 경우는 소수점 앞자리가 그대로 유지(=내림),

5보다 클경우는 자리올림이 발생해 소수점 앞자리가 +1 증가한다(=올림) int형으로 캐스팅하여 반올림후 필요없는 뒷자리는 버리기 정수 상태의 값을 처음 소수점위치로 이동 (/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 / 남궁 성 / 도우출판

from http://bada744.tistory.com/23 by ccl(A) rewrite - 2021-10-18 19:01:16