引言
現在來玩一個數字拆解游戲。想象一下手里拿著一個三位數的積木,現在需要把它拆成個位、十位和百位三塊,然后把它們加起來。這個操作在實際編程中很常見,例如做密碼校驗、游戲分數計算等都可能會用到。
案例:求三位數各位之和
編寫程序,從鍵盤輸入一個三位的正整數,輸出這個數的各位數字的和。
# 源文件保存為“NumberSplitter.java”。
import java.util.Scanner;public class NumberSplitter {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("請輸入一個三位整數:");int number = scanner.nextInt();// 拆解數字int hundred = number / 100; // 獲取百位數int ten = (number % 100) / 10; // 獲取十位數int one = number % 10; // 獲取個位數int sum = hundred + ten + one; // 計算各位之和System.out.printf("%d的各位數字之和:%d + %d + %d = %d", number, hundred, ten, one, sum);scanner.close();}
}
運行結果
請輸入一個三位整數:123
123的各位數字之和:1 + 2 + 3 = 6
代碼解析
- 用
number / 100
得到百位數,因為整數除法會舍去小數部分。例如365 ÷ 100 = 3。 number % 100得到后兩位數,
(number % 100) / 10`再將得到的后兩位數除以10得到十位數。比如365 % 100 = 65,然后65 ÷ 10 = 6。number % 10
直接得到個位數,因為這是求除以10的余數。比如365 ÷ 10的余數是5- 最后把三個數字相加,用
printf
格式化輸出結果。 - 運行程序,當用戶輸入123,得到的結果:“123的各位數字之和:1 + 2 + 3 = 6”
案例:判斷水仙花數
水仙花數是指一個三位整數,其各位數字立方和等于該數本身。比如153 = 13 + 53 + 33。編寫程序,把所有的水仙花數打印輸出。
# 源文件保存為“NarcissisticNumber.java”。
public class NarcissisticNumber {public static void main(String[] args) {