java回文
java实现回文的几种方法
1.逆转数字
如输出3中位发所有回文数
1.为了实现遍历所有三位数,使用for循环
2.将三位数的百位、十位、个位单独分离出来
3.将百位乘以100+十位乘以10+百位赋值给一个新变量,实现三位数逆转
4.将新的三位数与原数比较,如果相等则为回文数
public class Test {
public static void main(String[] args) {
for (int i = 100; i < 1000; i++) {
//1.分离百位、十位、个位
int baiwei = i/100;
int shiwei = i/10%10;
int gewei = i%10;
//2.建立一个变量a,将个位*100+十位乘以10+百位*1赋值给变量a
int a = gewei*100+shiwei*10+baiwei;
//3.如果逆转侯的a==原来的数值,那么就是回文,输出
if(a == i){
System.out.println(i);
}
}
}
}
2.对称实现
例子同样为输出3三位数中的所有回文数
1.为了实现遍历三位数,使用for循环
2.因为是三位数,只用考虑百位和个位是否相等。例:191,只用考虑9前面和9后面是佛相等(如果是偶数位,则考虑前面一半是否和后面一半相等),相等则为回文数
public class Test {
public static void main(String[] args) {
//1.for循环实现100-999的循环查找
for(int i= 1 ; i <= 999 ; i++){
//2.分离百位个个位
int baiwei = i/100;
int gewei = i%10;
//3.判断是否相等,相等则为回文数
if(baiwei == gewei)
System.out.println(i);
}
}
}
}
思考:
前面两种方法的本质都是分离位数,都要知道是几位才还分离,
但如果是获取从控制台输入,且位数不固定,也可以通过用while循环实现位数判定,,之后还有根据几位来分离位数,太麻烦,那有没有更简单的办法呢?
3.将int型转换为String型,然后逆转字符串,判断是否相等
用stringBuffer或者stringBuilder自带的reverse方法
1.为了从控制台获得任意位数数字,创建Scanner对象,并创建int整型变量接收
2.将数值+""赋值给字符串变量实现,整型转化成字符型变量
3.调用StringBuilder的reverse()方法,实现字符串反转
4.使用String的equals方法判断两字符串是否相等
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数字:");
int num = scanner.nextInt();
//将数值+""赋值给字符串变量实现,整型转化成字符型变量
String str = num + "";
//逆转字符串
String str1 = new StringBuffer(str).reverse().toString();
//字符串内置的判断相等方法
if(str1.equals(str)){
System.out.println("该数字是回文数!");
}else {
System.out.println("该数字不是回文数!");
}
}
}
这样通过将数转换为字符串,在将字符串饭转在判断的方法,即可实现任意位数的回文数的判断。