题目:打印5位数中的所有回文数,每行打印10个数。最后统计一下一共有多少个5位回文数。
注:回文数即正反读都是一个数,5位数的话,只要个位与万位相同,十位与千位相同就是一个回文数。
文章用了4种方法判断与输出
for循环
多重for循环(把个位和万位直接赋值为一样的)
int赋值(采用num%10、num/10的循环方式,将其存入int型数组)
数组
其中知识点:
1.toString() 方法用于返回以一个字符串表示的 Number 对象值。
toString(): 返回表示 Integer 值的 String 对象。
toString(int i): 返回表示指定 int 的 String 对象。
String s=Integer.toString(input); 将int类型input转换为字符串类型s 直接转换则为input.toString();
2.toCharArray() 方法将字符串转换为字符数组
char arr[]=s.toCharArray();将字符串s转化为数组arr[]
(第四种方法数组的for循环+if判断不太明白 等以后学明白数组再来看)
3.
//If(flag) == if(flag==true) // //If(!flag) == if(!flag==true)
package com.wu.exercise;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
/* Scanner scanner=new Scanner(System.in);//第一种方法 输出回文数
//System.out.println("请输入一个五位数字");
//int a=scanner.nextInt();
//for(int a=10000;a<=99999;a++){ //第二种方法 遍历后直接输出a
boolean flag=true;
//54145
int b=a/10000;
int c=a/1000%10;
int d=a/100%10;
int e=a/10%10;
int f=a%10;
if(b==f&&c==e){
System.out.println("该数字为回文数");
}else {
System.out.println("该数字不是回文数");
}
}}
}*/
/*int count=0;//第三种方法 把个位和万位直接赋值为一样的
for(int ge=0;ge<10;ge++){
for (int shi = 0; shi <10; shi++) {
for (int bai = 0; bai <10; bai++) {
System.out.print(ge+""+shi+""+bai+""+shi+""+ge);
System.out.print("\t");
count++;
if(count%10==0){
System.out.println();
}
}
}}
System.out.println("总数为"+count);
}
}*/
//另外给出 判断输入的数是否是回文数的算法 用数组
Scanner scanner = new Scanner(System.in);
System.out.print("请输入需要判断的数(位数不限):");
int input = scanner.nextInt();
boolean flag=true;
String s=Integer.toString(input);
char arr[]=s.toCharArray();
//for循环语句如果循环体内只有一条执行语句则不用加大括号,如果执行语句为多条语句则必须用大括号括起来,以表示这一部分的执行语句都在循环体内,循环条件满足时要被执行的语句;
for (int i = 0;i < arr.length / 2 ; i ++)
if (arr[i] != arr[arr.length - i - 1]) { //数组中从左向右数第i个数对应从左向右数第arr.length - i - 1个数(从右向左为第i个数)
flag = false;
System.out.println("不是回文数");
break;
}
if(flag)//有括号的话,if语句控制{}里面的所有语句,没括号的话,if语句只控制最近的一行。每句代码以分号 ; 分隔开来。 最好都加上以防特殊情况
//If(flag) == if(flag==true)
//
//If(!flag) == if(!flag==true)
System.out.print("您输入的数是回文数!");
scanner.close();
}
}
输出: