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);
}
}
- 반올림하고 싶은 자리를 소수점 바로 뒤에 오도록 이동 (*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 / 남궁 성 / 도우출판
728x90