import java.util.Scanner;
public class homewwork1 {
public static void main(String[] args) {
System.out.println("화면에 숫자를 입력해주세요.");
// 사용자로부터 코드를 입력받는다.
Scanner s = new Scanner(System.in);
// 입력 받기 위해 스캐너 코드를 작성한 후 스캐너 모듈을 가져온다.
double userInputNumber = s.nextInt();
// 입력 받은 숫자를 정수값 변수 userInputNumber에 저장한다.
System.out.println("당신이 입력한 숫자는 " + userInputNumber + " 입니다.");
System.out.println("당신이 입력한 숫자에 +10을 한 값은 " + (userInputNumber + 10) + " 입니다.");
System.out.println("당신이 입력한 숫자에 -5를 한 값은 " + (userInputNumber - 5) + " 입니다.");
System.out.println("당신이 입력한 숫자에 *2를 한 값은 " + (userInputNumber * 2) + " 입니다.");
System.out.println("당신이 입력한 숫자에 /2를 한 값은 " + (userInputNumber / 2) + " 입니다.");
System.out.println("당신이 입력한 숫자에 %3을 한 값은 " + (userInputNumber % 3) + " 입니다.");
}
}
실행 예시
화면에 숫자를 입력해주세요.
0
당신이 입력한 숫자는 0.0 입니다.
당신이 입력한 숫자에 +10을 한 값은 10.0 입니다.
당신이 입력한 숫자에 -5를 한 값은 -5.0 입니다.
당신이 입력한 숫자에 *2를 한 값은 0.0 입니다.
당신이 입력한 숫자에 /2를 한 값은 0.0 입니다.
당신이 입력한 숫자에 %3을 한 값은 0.0 입니다.
화면에 숫자를 입력해주세요.
7
당신이 입력한 숫자는 7.0 입니다.
당신이 입력한 숫자에 +10을 한 값은 17.0 입니다.
당신이 입력한 숫자에 -5를 한 값은 2.0 입니다.
당신이 입력한 숫자에 *2를 한 값은 14.0 입니다.
당신이 입력한 숫자에 /2를 한 값은 3.5 입니다.
당신이 입력한 숫자에 %3을 한 값은 1.0 입니다.
근데 이 스캐너라는애가 실수 입력을 못 받는 것 같다. 원래 실수까지 입력 받으려고 결과가 소수점 이하가 나오도록 했던건데...
이 부분은 다시 보니 double userInputNumber = s.nextInt( ); 때문이었다.
s.nextInt( ) 스캐너로부터 입력 받은 정수(int)값을 double userInputNumber 실수형(double) 변수 userInputNumber에 담아라.
따라서 7을 입력 받았을 때 저렇게 해주면 7/2 중 앞에 7이 double 포맷이라 나눗셈이 정상적으로 되었지만 실수 자체를 입력 받지 못했던거다.
따라서 다음과 같이 변경하면 정상적으로 작동한다.
double userInputNumber = s.nextDouble( ); // 스캐너 입력 받을 때는 자료형 첫글자를 대문자로 입력해야 작동한다. nextdouble X
따라서 if else문을 사용하기 위해 실수에서도 나머지 연산이 제대로 작동하는지 확인하기 위해 다음을 입력해보면
public class homewwork1 {
public static void main(String[] args) {
System.out.println((double)7.4%2);
System.out.println((double)0.0%2);
System.out.println((double)0%2);
System.out.println((double)6%2);
System.out.println((double)7.5%2);
if((double)6%2==0) {
System.out.println("True");
}
}
}
1.4000000000000004
0.0
0.0
0.0
1.5
True
로 잘 작동함을 알 수 있다.
public class homewwork1 {
public static void main(String[] args) {
if((userInputNumber-(int)userInputNumber)%2==0) {
userInputNumber = (int)userInputNumber;
System.out.println("당신이 입력한 숫자는 " + userInputNumber + " 입니다.");
System.out.println("당신이 입력한 숫자에 +10을 한 값은 " + (int)(userInputNumber + 10) + " 입니다.");
System.out.println("당신이 입력한 숫자에 -5를 한 값은 " + (int)(userInputNumber - 5) + " 입니다.");
System.out.println("당신이 입력한 숫자에 *2를 한 값은 " + (int)(userInputNumber * 2) + " 입니다.");
System.out.println("당신이 입력한 숫자에 /2를 한 값은 " + (int)(userInputNumber / 2) + " 입니다.");
System.out.println("당신이 입력한 숫자에 %3을 한 값은 " + (int)(userInputNumber % 3) + " 입니다.");
}
로 int로 형변환 해서 넣고 계산 하면 되겠지... 하고 넣어봤지만
화면에 숫자를 입력해주세요.
6
당신이 입력한 숫자는 6.0 입니다.
당신이 입력한 숫자에 +10을 한 값은 16.0 입니다.
당신이 입력한 숫자에 -5를 한 값은 1.0 입니다.
당신이 입력한 숫자에 *2를 한 값은 12.0 입니다.
당신이 입력한 숫자에 /2를 한 값은 3.0 입니다.
당신이 입력한 숫자에 %3을 한 값은 0.0 입니다.
가 된다.. if((userInputNumber-(int)userInputNumber)%2==0.0)으로 해봐도 마찬가지
그래서 그냥 double로 받아서 계산한 다음 int로 결과만 형변환하기로 했다.
최종적으로 완성된 코드는 다음과 같다.
< 아래 코드가 줄이 한 줄로 나오지 않아 스샷을 추가한다 >
import java.util.Scanner;
public class homewwork1 {
public static void main(String[] args) {
System.out.println("화면에 숫자를 입력해주세요.");
// 사용자로부터 코드를 입력받는다.
Scanner s = new Scanner(System.in);
// 입력 받기 위해 스캐너 코드를 작성한 후 스캐너 모듈을 가져온다.
double userInputNumber = s.nextDouble();
// 입력값 - (int) % 2 == 0 입력값을 통해 정수인지 실수인지 판단한다.
if((userInputNumber - (int)userInputNumber) % 2 == 0) { // 정수면 실행
System.out.println("당신이 입력한 숫자는 " + (int)userInputNumber + " 입니다.");
System.out.println("당신이 입력한 숫자에 +10을 한 값은 " + (int)(userInputNumber + 10) + " 입니다.");
System.out.println("당신이 입력한 숫자에 -5를 한 값은 " + (int)(userInputNumber - 5) + " 입니다.");
System.out.println("당신이 입력한 숫자에 *2를 한 값은 " + (int)(userInputNumber * 2) + " 입니다.");
if(userInputNumber % 2 == 0) { // 짝수면 실행
System.out.println("당신이 입력한 숫자에 /2를 한 값은 " + (int)(userInputNumber / 2) + " 입니다.");
} else { // 홀수면 실행
System.out.println("당신이 입력한 숫자에 /2를 한 값은 " + (userInputNumber / 2) + " 입니다.");
}
System.out.println("당신이 입력한 숫자에 %3을 한 값은 " + (int)(userInputNumber % 3) + " 입니다.");
} else { // 실수면 실행
System.out.println("당신이 입력한 숫자는 " + userInputNumber + " 입니다.");
System.out.println("당신이 입력한 숫자에 +10을 한 값은 " + (userInputNumber + 10) + " 입니다.");
System.out.println("당신이 입력한 숫자에 -5를 한 값은 " + (userInputNumber - 5) + " 입니다.");
System.out.println("당신이 입력한 숫자에 *2를 한 값은 " + (userInputNumber * 2) + " 입니다.");
System.out.println("당신이 입력한 숫자에 /2를 한 값은 " + (userInputNumber / 2) + " 입니다.");
System.out.println("당신이 입력한 숫자에 %3을 한 값은 " + (userInputNumber % 3) + " 입니다.");
}
}
}
if문 작동
화면에 숫자를 입력해주세요.
0
당신이 입력한 숫자는 0 입니다.
당신이 입력한 숫자에 +10을 한 값은 10 입니다.
당신이 입력한 숫자에 -5를 한 값은 -5 입니다.
당신이 입력한 숫자에 *2를 한 값은 0 입니다.
당신이 입력한 숫자에 /2를 한 값은 0 입니다.
당신이 입력한 숫자에 %3을 한 값은 0 입니다.
화면에 숫자를 입력해주세요.
6
당신이 입력한 숫자는 6 입니다.
당신이 입력한 숫자에 +10을 한 값은 16 입니다.
당신이 입력한 숫자에 -5를 한 값은 1 입니다.
당신이 입력한 숫자에 *2를 한 값은 12 입니다.
당신이 입력한 숫자에 /2를 한 값은 3 입니다.
당신이 입력한 숫자에 %3을 한 값은 0 입니다.
화면에 숫자를 입력해주세요.
7
당신이 입력한 숫자는 7 입니다.
당신이 입력한 숫자에 +10을 한 값은 17 입니다.
당신이 입력한 숫자에 -5를 한 값은 2 입니다.
당신이 입력한 숫자에 *2를 한 값은 14 입니다.
당신이 입력한 숫자에 /2를 한 값은 3.5 입니다.
당신이 입력한 숫자에 %3을 한 값은 1 입니다.
화면에 숫자를 입력해주세요.
6.0
당신이 입력한 숫자는 6 입니다.
당신이 입력한 숫자에 +10을 한 값은 16 입니다.
당신이 입력한 숫자에 -5를 한 값은 1 입니다.
당신이 입력한 숫자에 *2를 한 값은 12 입니다.
당신이 입력한 숫자에 /2를 한 값은 3 입니다.
당신이 입력한 숫자에 %3을 한 값은 0 입니다.
화면에 숫자를 입력해주세요.
7.0
당신이 입력한 숫자는 7 입니다.
당신이 입력한 숫자에 +10을 한 값은 17 입니다.
당신이 입력한 숫자에 -5를 한 값은 2 입니다.
당신이 입력한 숫자에 *2를 한 값은 14 입니다.
당신이 입력한 숫자에 /2를 한 값은 3.5 입니다.
당신이 입력한 숫자에 %3을 한 값은 1 입니다.
else문 작동
화면에 숫자를 입력해주세요.
7.4
당신이 입력한 숫자는 7.4 입니다.
당신이 입력한 숫자에 +10을 한 값은 17.4 입니다.
당신이 입력한 숫자에 -5를 한 값은 2.4000000000000004 입니다.
당신이 입력한 숫자에 *2를 한 값은 14.8 입니다.
당신이 입력한 숫자에 /2를 한 값은 3.7 입니다.
당신이 입력한 숫자에 %3을 한 값은 1.4000000000000004 입니다.
로 깔끔하게 출력이 가능하다.
'개발자 > Java' 카테고리의 다른 글
Java (자바) 형변환 그리고 나눗셈 (0) | 2020.03.28 |
---|---|
Java (자바)의 자료형 및 범위 (0) | 2020.03.27 |
Java (자바) 함수 & 단축키 모음 (0) | 2020.03.25 |
Java (자바) 이클립스(Eclipse) 설치하고 Hello, world! 띄우기 (0) | 2020.03.25 |
Java (자바) 설치하기 (0) | 2020.03.25 |