下面给出几种个人总结出来的回数判断方法,利用java代码做出详细的讲解:供参考
第一种方法通过数据结构的方法分别通过个十百千万位数字进行逐个比较,缺点代码较繁杂
java code:
import java.util.*;
import java.io.*;
public class Huishu
{
//利用数值的各位上面的值相等来判断是否是回数
public static void test(int num)
{
//计算个位数
int d1 = num%10;
//计算十位数
int d2 = num%100/10;
//计算百位数
int d3 = num%1000/100;
//计算千位数
int d4 = num%10000/1000;
//计算万位数
int d5 = num%100000/10000;
if(num > 99999 || num < 0)
{
System.out.println("请输入0-99999间的数字!");
}
else if(num<=99999 && num >=10000)
{
if(d1 == d5 && d2 == d4)
{
System.out.println(num + "是回数!");
}
else
System.out.println(num + "不是回数!");
}
else if(num<=9999 && num >=1000)
{
if(d1 == d4 && d2 == d3)
{
System.out.println(num + "是回数!");
}
else
System.out.println(num + "不是回数!");
}
else if(num<=999 && num >=100)
{
if(d1 == d3)
{
System.out.println(num + "是回数!");
}
else
System.out.println(num + "不是回数!");
}
else if(num<=99 && num >=10)
{
if(d1 == d2)
{
System.out.println(num + "是回数!");
}
else
System.out.println(num + "不是回数!");
}
else if(num < 10 && num >= 0)
{
System.out.println(num + "是回数!");
}
}
public static void main(String[] args)
{
try(
InputStreamReader reader = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(reader))
{
String buffer = null;
while((buffer = br.readLine()) != null)
{
if(buffer.equals("exit"))
{
System.exit(1);
}
int num = Integer.parseInt(buffer);
test(num);
}
}catch(IOException e)
{
e.printStackTrace();
}
}
}
第二种方法通过StringBuffer(线程安全的)或者StringBuilder(非线程安全的)提供的reverse()方法进行判断
java code:
import java.io.*;
public class Huishu2
{
public static void test(int num)
{
String str = String.valueOf(num);
StringBuilder sb = new StringBuilder(str);
if(sb.reverse().toString().equals(str))
{
System.out.println(num + "是回数");
}
else
{
System.out.println(num + "不是回数");
}
}
public static void main(String[] args)
{
System.out.println("请输入一个数:");
try(
InputStreamReader reader = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(reader))
{
String buffer = null;
while((buffer = br.readLine()) != null)
{
if(buffer.equals("exit"))
{
System.exit(1);
}
int num = Integer.parseInt(buffer);
test(num);
}
}catch(IOException e)
{
e.printStackTrace();
}
}
}
第三种方法是通过提取字符的方式,比较字符之间是否相等的方法来判断
java code:
import java.util.*;
import java.io.*;
public class Huishu
{
public static boolean isHuishu(int num)
{
boolean flag = false;
String str = String.valueOf(num);
for(int i=0;i<=str.length()/2;i++)
{
if(str.charAt(i)!=str.charAt(str.length()-1-i))
{
flag = false;
break;
}
flag = true;
}
if(flag == true)
{
System.out.println("是回数");
}
else
{
System.out.println("不是回数");
}
return flag;
}
public static void main(String[] args) throws Exception
{
System.out.println("请输入一个数:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String buffer = null;
while((buffer = br.readLine()) != null)
{
if(buffer.equals("exit"))
{
System.exit(1);
}
else{
int num = Integer.parseInt(buffer);
isHuishu(num);
}
}
}
}
综上三种方法均能判断一个数是否为回数的判断,个人比较倾向第二种方法,简单易懂,哈哈哈哈~~~~