[참고 및 인용 출처]
1. 구글 검색: 티스토리, "나누기 구조", 컴퓨터 연산-나눗셈, (2024.11.07)
2. 구글 검색: 수학사랑, "나누기 dividend", 나눗셈(division), (2024.11.07)
[문제]
public class VariableExtraPractice {
public static void main(String[] args) {
int dividend;
// [1] 정수형 int 타입 변수 dividend 선언
dividend = 10;
// [2] dividend 변수에 값 10을 넣어 변수 초기화
// [복습 1] 변수 선언 및 초기화를 함께 할 수 있다.
// 즉, int dividend=10; 또한 가능하다.
// [dividend] 피제수, 일명 '나뉘는 수'를 의미한다.
int divisor;
// [3] 정수형 int 타입 변수 divisor 선언
divisor = 7;
// [4] divisor 변수에 값 7을 넣어 변수 초기화
// [복습 2] int divisor=7; 또한 가능하다.
// [divisor] 제수, 일명 '나누는 수'를 의미한다.
double quotient = dividend/divisor;
// [5] 실수형 double 타입 변수 quotient 선언 및 초기화
// 초기화 값은 dividend 변수를 divisor 변수로 나눈 몫
// [quotient] '몫'을 뜻한다. 나머지는 'remainder'이다.
System.out.printf("%d만 원 나누기 %d명 해서 각자 %.1f만 원입니다. %n", dividend, divisor, quotient);
// [6] 기대한 출력문: 10만 원 나누기 7명 해서 각자 1.4만 원입니다.
}
}
수요일에는 정말 고비의 연속이나 다름없었다. 자바(Java)라도 잘 실행되면 그나마 나았으련만. 분명히 몫에 해당하는 quotient 변수를 실수형인 double로 선언했는데도 갑자기 1만 원이 나와서 화면이 뻥 뚫리도록 쳐다봤다. 노려봤다는 표현이 더 정확할지도 모르겠다.
[원인]
public class VariableExtraPractice {
public static void main(String[] args) {
int dividend;
dividend = 10;
int divisor;
divisor = 7;
double quotient = (double)dividend/divisor;
// [오답] dividend/divisor
// [정답 1] (double)dividend/divisor
// [정답 2] dividend/(double)divisor
System.out.printf("%d만 원 나누기 %d명 해서 각자 %.1f만 원입니다. %n", dividend, divisor, quotient);
}
}
원인은 (double) 누락에 있었다. 애초에 dividend 변수와 divisor 변수 타입이 정수형이었기 때문에 나누기를 하면 1만 출력되었다. 1을 실수형 변수 quotient에 저장했으니, 1.0으로 나올 수밖에 없었다. 계산할 때부터 dividend/divisor에 (double)을 붙여주어야 했다.
[해결]
public class VariableExtraPractice {
public static void main(String[] args) {
int dividend;
dividend = 10;
int divisor;
divisor = 7;
double quotient = (double)dividend/divisor;
System.out.printf("%d만 원 나누기 %d명 해서 각자 %.1f만 원입니다. %n", dividend, divisor, quotient);
}
}
public class VariableExtraPractice {
public static void main(String[] args) {
int dividend;
dividend = 10;
int divisor;
divisor = 7;
double quotient = dividend/(double)divisor;
System.out.printf("%d만 원 나누기 %d명 해서 각자 %.1f만 원입니다. %n", dividend, divisor, quotient);
}
}
하마터면 10만 원 중 3만 원이 날아갈 뻔했다. 단번에 원하는 값을 출력하진 못했으나 어쨌든 해결했고, 겸사겸사 영어 단어도 몇 개 배웠으니 좋게 생각하련다.
'오답 노트-자바(Java)' 카테고리의 다른 글
24.11.22(금) "1111 말고 1234 부탁드려요. 제발요!" (2단계 키오스크) (0) | 2024.11.24 |
---|---|
24.11.13(수) "변수 전용 작명소는 없나요?" (1단계 계산기) (0) | 2024.11.24 |
24.11.03(일) "i냐 g냐, 그것이 문제로다." (0) | 2024.11.03 |
24.11.03(일) "int indexN < nations.length;" (0) | 2024.11.03 |
24.10.29(화) "31세도 40대, 25세도 40대입니다." (0) | 2024.10.30 |