用户从键盘输入一个1-99999之间的数,程序讲判断这个数是几位数,并判断这个数是否是回文数。如12121,12321,3223,131,88,1都是回文数字。
时间: 2024-09-20 10:11:19 浏览: 52
要编写一个Java程序来实现这个功能,你可以使用以下步骤:
1. 首先,获取用户的输入并验证它是否在1到99999之间。
2. 确定输入数的位数,这可以通过对输入数取自然对数然后向上取整来实现,因为对数的底数通常是10,所以位数等于整数部分加一。
3. 接下来,检查数是否是回文。为此,你可以创建两个指针,一个从左开始,另一个从右结束。然后逐个比较对应的数字,直到两个指针相遇或交叉。如果在整个过程中所有对应位置的数字都相等,那么就是回文数。
下面是相关的Java代码实现:
```java
import java.util.Scanner;
public class PalindromeCheck {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter a number between 1 and 99999: ");
int inputNumber = scanner.nextInt();
// Step 1: Validate the input
if (inputNumber < 1 || inputNumber > 99999) {
System.out.println("Invalid input! Please enter a number between 1 and 99999.");
return;
}
// Step 2: Determine the number of digits
int digitCount = (int) Math.ceil(Math.log10(inputNumber)) + 1;
// Step 3: Check if it's a palindrome
boolean isPalindrome = checkPalindrome(inputNumber, digitCount);
// Display results
if (isPalindrome) {
System.out.println(inputNumber + " is a palindrome with " + digitCount + " digits.");
} else {
System.out.println(inputNumber + " is not a palindrome.");
}
}
private static boolean checkPalindrome(int number, int digitCount) {
int left = number / Math.pow(10, digitCount - 1);
int right = 0;
for (int i = 0; i < digitCount / 2; i++) {
right = (right * 10) + (number % 10);
number /= 10;
if (left != right) {
return false;
}
left /= 10;
}
return true;
}
}
```
运行这段代码后,它会提示用户输入一个数字,然后根据输入进行判断和输出结果。
阅读全文