什么是回文数字?
原数等于将它的组成数字倒叙所得到数字的数。(好像有点ran)
简单地说就是正着看和反着看都一样的数字
/*特殊解题方法
数据:用户输入的三位整数number、三位数的个位和百位上的数字a、b
操作;判断回文、输出
步骤:1、提示用户输入一个三位整数
2、将个位和百位的数字拿出来
3、判断个位和百位数字是否相等、并输出
*/
import java.util.Scanner;
class ProblemFour_01{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//1、提示用户输入一个三位整数
System.out.print("Enter a three-digit integer: ");
int number=scanner.nextInt();
//2、将个位和百位的数字拿出来
int a=number%10;
int b=number/100;
//3、判断个位和百位数字是否相等、并输出
if(a==b){
System.out.println(number+" is a palindrome");
}else
System.out.println(number+" is not a palindrome");
}
}
运行结果
Enter a three-digit integer: 123
123 is not a palindrome
Enter a three-digit integer: 121
121 is a palindrome
这里我们需要用到原数字的反序数
思路:将每个数字从个位到最高位依次提取出来,然后组合
我们需要一个变量sum来存反序数
int a=123456
先提取个位 sum= a%10 然后去除个位 a= a/10
然后提取十位sum=sum10+a%10 然后去除十位 a=a/10
然后提取百位sum=sum10+a%10 然后去除百位 a=a/10
…
我们可以发现除了第一个式子与其他式子的区别是sum=sum10+a%10
所以我们可以给sum=0;那么就可以写成
int a=123456
先提取个位 sum=sum+ a%10 然后去除个位 a= a/10
然后提取十位sum=sum10+a%10 然后去除十位 a=a/10
然后提取百位sum=sum*10+a%10 然后去除百位 a=a/10
…
当a=0时我们就将整个数取完了。
/*通用方法
思路:得到输入数的反序数字,通过比较反序数字和原数字,如果原数字和反序数字相等那么原数字就是回文数字
*/
import java.util.Scanner;
public class ProblemFour_02{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter a three-digit integer: ");
int num = scanner.nextInt();
int temp = num;
int sum = 0;
sum = sum * 10 + num % 10;
num /= 10;
sum = sum * 10 + num % 10;
num /= 10;
sum = sum * 10 + num % 10;
num /= 10;
if(sum==temp){
System.out.println(temp+" is a palindrome");
}else{
System.out.println(temp+" is not a palindrome");
}
}
}
运行结果
Enter a three-digit integer: 123
123 is not a palindrome
Enter a three-digit integer: 121
121 is a palindrome
/*通用方法
使用for循环
思路:得到输入数的反序数字,通过比较反序数字和原数字,如果原数字和反序数字相等那么原数字就是回文数字
*/
import java.util.Scanner;
public class ProblemFour_03{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter a three-digit integer: ");
int num = scanner.nextInt();
int temp = num;
int sum = 0;
for(int i=0;i<3;i++){
sum = sum * 10 + num % 10;
num /= 10;
}
if(sum==temp){
System.out.println(temp+" is a palindrome");
}else{
System.out.println(temp+" is not a palindrome");
}
}
}
运行结果
Enter a three-digit integer: 123
123 is not a palindrome
Enter a three-digit integer: 121
121 is a palindrome
/*通用方法
使用while循环
思路:得到输入数的反序数字,通过比较反序数字和原数字,如果原数字和反序数字相等那么原数字就是回文数字
*/
import java.util.Scanner;
public class ProblemFour_04{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter a three-digit integer: ");
int num = scanner.nextInt();
int temp = num;
int sum = 0;
while(num!=0){
sum = sum * 10 + num % 10;
num /= 10;
}
if(sum==temp){
System.out.println(temp+" is a palindrome");
}else{
System.out.println(temp+" is not a palindrome");
}
}
}
运行结果
Enter a three-digit integer: 123
123 is not a palindrome
Enter a three-digit integer: 121
121 is a palindrome
对于任意一个正整数,回文判断
由于是任意正整数所以只能使用循环
/*扩展:当不知道用户输入的是几位数时
我们就必须使用循环来解决这个问题
for循环
for环需要知道循环的次数,所以我们需要计算用户输入的是几位数;
我们使用while循环来计算
*/
import java.util.Scanner;
class ProblemFour_05{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//提示用户输入一个正整数(任意的正整数)
System.out.print("请输入一个正整数:");
int number=scanner.nextInt();
int temp1=number;
int temp2=number;
int a=0;//存正整数的位数
int sum=0;//存用户输入的数的倒序数
//计算正整数有几位
while(temp1!=0){
a=a+1;
temp1=temp1/10;
}
for(int i=0;i<a;i++){
sum = sum * 10 + number % 10;
number /= 10;
}
if(sum==temp2){
System.out.println(temp2+" 是一个回文数");
}else
System.out.println(temp2+" 不是回文数");
}
}
运行结果
请输入一个正整数:123456
123456 不是回文数
请输入一个正整数:123454321
123454321 是一个回文数
/*扩展:当不知道用户输入的是几位数时
我们就必须使用循环来解决这个问题
while循环
*/
import java.util.Scanner;
class ProblemFour_06{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//提示用户输入一个正整数(任意的正整数)
System.out.print("请输入一个正整数:");
int number=scanner.nextInt();
int temp1=number;
int sum=0;//存用户输入的数的倒序
while(number!=0){
sum = sum * 10 + number % 10;
number /= 10;
}
if(sum==temp1){
System.out.println(temp1+" 是一个回文数");
}else
System.out.println(temp1+" 不是回文数");
}
}
运行结果
请输入一个正整数:123456
123456 不是回文数
请输入一个正整数:123454321
123454321 是一个回文数