將輸入視為字串處理最簡單:
1. 直接讀取字串 s。
2. 位數即 s.length()。
3. 從字串末尾向前遍歷輸出字符,即得逆序數字。
package com.example;
import java.util.Scanner;
public class ReverseDigits {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("請輸入一個不大於 5 位的正整數:");
String s = sc.nextLine().trim(); // 移除可能的空白
// 輸入驗證(可選)
if (!s.matches("\\d{1,5}")) {
System.out.println("輸入無效:請輸入 1~5 位數字。");
return;
}
int len = s.length();
System.out.print("逆序數字:");
for (int i = len - 1; i >= 0; i--) {
System.out.print(s.charAt(i));
}
System.out.println();
System.out.println("位數:" + len);
}
}
請輸入一個不大於 5 位的正整數:12345
逆序數字:54321
位數:5
若要求不使用字串操作,可用除 10 取餘數:
int n = sc.nextInt(); // 讀取整數
int count = 0;
System.out.print("逆序數字:");
while (n > 0) {
System.out.print(n % 10); // 輸出個位
n /= 10; // 去掉個位
count++;
}
System.out.println("\n位數:" + count);
注意:此法會忽略前導零(如輸入 00123 會被讀為 123),若需保留前導零必須用字串法。
Scanner.nextInt() 會吞掉換行符,後續若呼叫 nextLine() 會讀到空行,建議統一用 nextLine() 讀字串再轉換。for (int i = len-1; i >= 0; i--) 比 i > 0; i-- 再 i-1 更直觀不易出界。