编写一个Java应用程序,用户从键盘输入一个1~99999之间的数,判断这个数是几位数,并判断这个数是否是回文数。要求用到正则表达式
时间: 2025-01-01 19:39:03 浏览: 12
编写一个Java应用程序,首先需要获取用户的输入,然后检查数字的位数,最后判断它是否是回文数。我们可以使用正则表达式来简化输入验证步骤。以下是程序的一个简单实现:
```java
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个1到99999之间的整数:");
// 正则表达式用于验证数字范围和位数
Pattern pattern = Pattern.compile("\\d{1,5}");
Matcher matcher = pattern.matcher(scanner.nextLine());
if (matcher.matches()) { // 如果匹配成功,输入有效
int num = Integer.parseInt(matcher.group());
int digitCount = String.valueOf(num).length(); // 获取数字的位数
// 判断是否为回文数
boolean isPalindrome = checkPalindrome(num);
System.out.printf("输入的数字是%d位数,%s是一个回文数.\n", digitCount, isPalindrome ? "是" : "不是");
} else {
System.out.println("输入无效,请重新输入一个1到99999之间的整数.");
}
scanner.close();
}
private static boolean checkPalindrome(int num) {
int reversedNum = 0;
int temp = num;
while (temp != 0) {
reversedNum = reversedNum * 10 + temp % 10; // 反转数字
temp /= 10;
}
return num == reversedNum; // 比较原数和反转后的数是否相等
}
}
```
在这个程序中,我们先用`Pattern`和`Matcher`对输入进行正则匹配,确保其为1到6位的数字。然后计算输入数字的位数,并利用`checkPalindrome`函数检查它是否为回文数。
阅读全文