728x90
반응형
오늘은 자바로 369 게임을 만들다가 작은 함정(?)을 하나 만났다.
숫자를 받아서, 십의 자리와 일의 자리를 보고
각 자리 숫자가 3의 배수이면 "@" 또는 "@@"를 출력하는 간단한 게임!
### 👉 내가 만든 코드 (정상 작동하는 버전)
```java
int first = num / 10; // 십의 자리
int second = num % 10; // 일의 자리
if ((first % 3 == 0) && (second % 3 == 0))
return "@@";
else if ((first % 3 == 0) || (second % 3 == 0))
return "@";
else
return num + "";
3의 배수인지 정확히 판단하려면 % 3 == 0을 써야 한다는 걸 다시 한 번 실감!
그런데... 아래처럼 잘못 쓴 코드도 있었음
if ((num / 10) / 3 == 0) {
System.out.println("@");
}
언뜻 보면 괜찮아 보이지만, 이건 십의 자리를 3으로 나눈 몫이 0인지 확인하는 코드라
정작 3의 배수인 경우에도 false가 나올 수 있다.
예를 들어 num이 30일 때:
- (30 / 10) = 3 → 3 / 3 = 1
- 1 == 0 → false
그래서 절대 안 된다! 3의 배수를 판단할 땐 무조건 % 3 == 0!!
정리
- 3의 배수인지 판단하고 싶을 때는 % (나머지 연산자)를 쓰자!
- / (나눗셈)는 몫을 구하므로 판별이 안 됨
- 자바로 게임 만들 때 자잘한 부분도 신경 써야 재밌다
다음엔 이 로직을 활용해서 진짜 1~100까지 돌아가는 369 게임도 만들어볼 예정!
함정도 있었지만 덕분에 %와 /의 차이 확실히 기억하게 됐다.
728x90
반응형
'JAVA' 카테고리의 다른 글
"자바로 고양이 vs 쥐 게임 만들기! 누가 더 빨리 잡을까?" (0) | 2025.04.15 |
---|---|
Java 객체지향 기초 – 개발자와 노트북 클래스로 배우는 클래스 관계와 메서드 활용2 (1) | 2025.04.15 |
Java 객체지향 기초 – 개발자와 노트북 클래스로 배우는 클래스 관계와 메서드 활용 (0) | 2025.04.15 |