由于某种原因,以下代码在输出中产生0,我不知道为什么。
long i = 999;
long j = 999;
long pal = 0;
for(; i >= 100; i--) { //Practice: 99 * 99
for(; j >= 100; j--) {
long k = i * j; // 9801 999*999 ~= 999006
String normal = String.valueOf(k);//String(9801)
String palindrome = new StringBuffer(normal).reverse().toString();//String(1089)
if (normal.equals(palindrome)) { //False
if (Long.valueOf(normal) > pal) { //Is greater than
pal = Long.valueOf(normal); // pal =
}
}
}
}
System.out.println(pal);
使用StringBuffer或Strings是一个问题吗?当for()循环设置为i时,它会返回答案。 0,不是i> = 100。
答案 0 :(得分:0)
j
达到100后, i
未重置。将初始化移动到for
语句中,它属于:{/ p>
for(long i = 999; i >= 100; i--) {
for(long j = 999; j >= 100; j--) {
作为旁注,请使用Long.parseLong()
代替Long.valueOf()
,以避免不必要的装箱和拆箱。