Java编程实验:判断输入数的位数与回文性

需积分: 37 2 下载量 3 浏览量 更新于2024-08-05 收藏 91KB PDF 举报
"Java编程实验,涉及用户输入、数字位数判断及回文数检查" 在Java编程中,本实验旨在训练学生对基本输入输出操作的理解以及数字逻辑判断的运用。实验要求用户从键盘输入一个1到99999之间的整数,然后程序会判断这个数是几位数,并且检查它是否为回文数。 首先,让我们深入理解实验中的关键知识点: 1. **用户输入**: 使用`java.util.Scanner`类可以从标准输入(通常是键盘)读取用户输入的数据。在这个例子中,通过`new Scanner(System.in)`创建了一个`Scanner`对象,然后使用`nextInt()`方法读取用户输入的一个整数。 2. **位数判断**: 要确定一个数的位数,可以使用模运算和除法来分离每一位。例如,`num%10`会返回个位数,`num%100/10`会返回十位数,以此类推。通过对`num`进行连续的模运算和除法,可以获取每个位上的数字。然后,根据这些值不等于零的情况,判断数的位数。 3. **回文数检查**: 回文数是指从前往后和从后往前读都一样的数。检查一个数是否为回文,可以将该数的各个位重新组合成一个新的数,然后与原数进行比较。如果相等,则为回文数。在代码中,通过一系列乘法和加法操作,将原数的每一位重新组合起来,然后用`if`语句进行比较。 实验代码中,针对不同位数的数,有四个条件分支: - 如果`d5`(万位)不为零,说明是五位数。 - 如果`d4`(千位)不为零,说明是四位数。 - 如果`d3`(百位)不为零,说明是三位数。 - 如果`d2`(十位)不为零,说明是两位数。 对于每一种情况,都会先打印出数字的位数,然后进行回文数的判断。如果满足回文条件,就输出“这是一个回文数”,否则输出“不是一个回文数”。 在实际编程中,可以优化这段代码,使其更加简洁和高效。例如,可以使用字符串转换和反转来检查回文数,而无需逐位比较。另外,位数判断部分也可以使用循环结构来简化代码,而不是单独处理每个位数的情况。 ```java String numStr = String.valueOf(num); int length = numStr.length(); boolean isPalindrome = true; for (int i = 0; i < length / 2; i++) { if (numStr.charAt(i) != numStr.charAt(length - 1 - i)) { isPalindrome = false; break; } } System.out.println(num + "是一个" + length + "位数"); if (isPalindrome) { System.out.println(num + "是一个回文数"); } else { System.out.println(num + "不是一个回文数"); } ``` 这样,无论输入的数字是几位,都可以统一处理,而且回文检查更为直观。