给一个不多于 5 位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
本题考察对整数位数的判断以及数字逆序输出的实现方法。题目限制输入为不超过 5 位的正整数(即范围在),需完成两个任务:
判断该数是几位数;
将其各位数字按逆序输出。
请输入:12345
12345是五位数
按逆序输出是:
54321请输入:7
7是一位数
按逆序输出是:7请输入:100
100是三位数
按逆序输出是:
001位数判定:
一位数:
二位数:
三位数:
四位数:
五位数:
更通用的方法是不断用 n /= 10 计数,直到 n == 0,计数即为位数。
逆序输出:
字符串法:转为字符串后倒序遍历;
数学法:重复执行 n % 10 获取个位,然后 n /= 10,直到 n == 0。
import java.util.Scanner;
public class DigitReverse {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入一个不多于5位的正整数:");
// 检查是否为有效整数输入
if (!in.hasNextLong()) {
System.out.println("Error: 输入不是整数,请重新运行程序。");
return;
}
long num = in.nextLong();
// 输入验证
if (num < 0 || num >= 100000) {
System.out.println("Error: 输入必须是非负且小于100000的整数。");
return;
}
// 特殊处理 0
if (num == 0) {
System.out.println("0是一位数");
System.out.println("按逆序输出是:0");
return;
}
// 方法1:计算位数(数学法)
long temp = num;
int digits = 0;
while (temp > 0) {
digits++;
temp /= 10;
}
System.out.println(num + "是" + digits + "位数");
// 方法2:逆序输出(数学法)
System.out.print("按逆序输出是:");
temp = num;
while (temp > 0) {
System.out.print(temp % 10);
temp /= 10;
}
System.out.println(); // 换行
}
}
本题虽简单,但常用于编程入门训练,重点在于理解数字的十进制分解。
若允许前导零(如输入 00123),则需注意:Java 的 Scanner.nextLong() 会自动忽略前导零,读入为 123。若需保留原始格式,应读取字符串而非数字。