import java.util.Scanner;
public class 回文数 {
public static void main(String[] args) {
//100~1000之间的回文数
for(int i=100;i<1000;i++){ //循环遍历100到1000
if(i/100%10==i%10){ //判断百位数字与个位数字是否相同
System.out.println(i);
}
}
//判断一个数是否回文数
Scanner input =new Scanner(System.in);
System.out.print("请输入一个数字:");
int num=input.nextInt();
int num1=num; //num1是用来求数字的位数的
int count=1; //数字的位数,默认为1位
boolean flag=true; //是否为回文数,默认为是
while(num1/10!=0){ //当num1为个位数时就结束循环
count++; //位数加1
num1=num1/10; //自身除以10
}
for(int i=1;i<=count/2;i++){ //循环(位数/2)-1次
if(!(num/(int)Math.pow(10, count-i)%10==num/(int)Math.pow(10,i-1)%10)){ //判断数字左右两边的数字是否相等
flag=false; //只要有一对数字不想等就不是回文数
break; //结束循环
}
}
if(flag){
System.out.println(num+"是回文数");
}else{
System.out.println(num+"不是回文数");
}
}
}
你说的夹心饼数其实就是回文数
数字无论是正读还是倒读都是一样,例如正读1234321,倒读还是1234321
以数字的中间为对称轴,左右两边的数字是相同的,比如1234321,最左边是1,最右边也是1,左边第二个是2,右边第二个也是2,以此类推
判断回文数:只要判断左右数字是否相等就行
补充知识:
获取数字每一位的数字:比如数字1234
个位:1234%10=4 //除以1再余10
十位:1234/10%10=3 //除以10再余10
百位:1234/100%10=2 //除以100再余10
千位:1234/1000%10=1 //除以1000再余10
结论:想得到多少位数字就先除多少再余10就行
2.多次方:
Math.pow(double 底数,double 幂数)
返回值:double类型
举例:Math.pow(2,4) →结果:2的4次方=16.0
注意:方法最终返回的是double型,可以通过强制转换变成整型
public class test
{
public static void main(String[] args)
{
for(int i=100;i<=999;i++){
if(i/100==(i%100%10))
System.out.println(i);
}
}
}
这东西得多练
int count = 0;
for (int i = 100; i < 1000; i++) {
if (i / 100 == i % 100 % 10) {
count++;
}
}
System.out.println(count);