輸入一個不超過 5 位的正整數,要求:① 統計位數 ② 逆序輸出各位數字。
| 方案 | 核心邏輯 | 優點 | 缺點 |
|---|---|---|---|
| 數學運算 | 循環 n%10 取末位,n/=10 縮減,計數器++ | 無額外空間,經典教科書做法 | 需處理前導零、負數邊界,代碼較繁瑣 |
| 字符串處理(推薦) | 讀入字符串,toCharArray() 逆序遍歷輸出,長度即位數 | 代碼極簡,天然支持任意長度,無溢出風險 | 極微小內存開銷,可忽略 |
package com.qimenguigu;
import java.util.*;
public class Test24 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個不大於5位的正整數:");
String s = sc.nextLine(); // 直接讀字符串
char[] ss = s.toCharArray(); // 轉字符數組
int count = 0;
for (int i = ss.length; i > 0; i--) {
System.out.print(ss[i-1]); // 逆序輸出
count++;
}
System.out.println();
System.out.println("這個數的位數為:" + count);
}
}
請輸入一個不大於5位的正整數: 12345 54321 這個數的位數為:5
面試或競賽中,遇到「位數統計、逆序、迴文、數字頻統計」類問題,**首選字符串/字符數組**,碼少、錯少、擴展強。數學運算法雖展示基本功,但工程落地時字符串法才是「正解」。