1.从键盘输入一个整数,判断是否为回文数
JAVA代码
package test2;
import java.util.Scanner;
public class test2 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int n=input.nextInt();
String s1=""+n;
String s2="";
int k=0;
while(n>=1) {
k=n%10;
s2=s2+k;
n/=10;
}
System.out.println(s1.equals(s2));
}
}
2.
草率了,StringBuilder没有重写equals方法比较的是对象地址,由于有一步s2=s1.reverse(),这样地址就是相同的了,所以下面转化为了String类型,再用equals比较,顺便说一下==当是基本数据类型时比较的是内容,当是引用数据类型时比较的时地址,什么样的是引用数据类型?只要是new对象的都是引用数据类型。
要注意的是可能给的两个数相同,要判断是否合理日期,合理则加一,不能没有判断
s2=s1.reverse()要注意s1此时值也改变了,所以s3要在这步之前
import java.util.Scanner;
public class Main {
static Scanner sc=new Scanner(System.in);
static int ans;
static int[] w= {0,31,28,31,30,31,30,31,31,30,31,30,31};
static int y1,y2,m1,m2,r1,r2;
public static void main(String[] args) {
int n1=sc.nextInt();
int n2=sc.nextInt();
y1=n1/10000;
m1=(n1%10000)/100;
r1=n1%100;
y2=n2/10000;
m2=(n2%10000)/100;
r2=n2%100;
while(y1!=y2||m1!=m2||r1!=r2) {
if(y1%400==0||(y1%4==0&&y1%100!=0)) w[2]=29;
else w[2]=28;
if(check()) ans++;
r1++;
if(r1>w[m1]) {
m1++;
r1=1;
}
if(m1>12) {
y1++;
m1=1;
}
}
if(n1==n2){
if(check())
ans++;
}
System.out.println(ans);
}
private static boolean check() {
StringBuilder s1=new StringBuilder();
StringBuilder s2=new StringBuilder();
s1.append(String.valueOf(y1));
if(m1<10) s1.append("0").append(String.valueOf(m1));
else s1.append(String.valueOf(m1));
if(r1<10) s1.append("0").append(String.valueOf(r1));
else s1.append(String.valueOf(r1));
String s3=s1.toString();
s2=s1.reverse();
String s4=s2.toString();
if(s3.equals(s4)) return true;
else return false;
}
}