Java 欧拉4号项目-韩元';打印结果
问题是 回文数的两种读法相同。最大的回文数 由两个2位数字的乘积构成,9009=91×99。Java 欧拉4号项目-韩元';打印结果,java,Java,问题是 回文数的两种读法相同。最大的回文数 由两个2位数字的乘积构成,9009=91×99。查找 由两个3位数字的乘积构成的最大回文。” 我不知道为什么我的代码不起作用。我推断,如果我从最大的数字开始,每次减少X,那么我找到的第一个回文数字就是它。但出于某种原因,它不是印刷品。非常感谢您的帮助 import java.lang.StringBuilder; public class Euler4 { public static void main(String[] args){
查找 由两个3位数字的乘积构成的最大回文。” 我不知道为什么我的代码不起作用。我推断,如果我从最大的数字开始,每次减少X,那么我找到的第一个回文数字就是它。但出于某种原因,它不是印刷品。非常感谢您的帮助
import java.lang.StringBuilder;
public class Euler4 {
public static void main(String[] args){
for (int x=999*999; x>=100*100; x--){
String num=Integer.toString(x);
StringBuilder num1 = new StringBuilder(num);
String num2 = num1.toString();
if (num2.equals(num1.reverse())==true)
System.out.println(num);
break;
}
}
}
您的循环只循环一次,因为您有
break代码>。添加大括号以防止将来发生此类情况:
if (num2.equals(num1.reverse().toString())) {
System.out.println(num);
break;
}
还要注意,如果(someBoolean==true)
写if是多余的,只需写if(someBoolean)
就可以防止错误赋值(=
而不是=
)。请。。缩进你的代码
老实说,当我查看您的代码时,我没有注意到这一点,但我使用了调试器,在不到5秒钟的时间内发现了问题。有一个调试器。。用它 您的循环只循环一次,因为您有中断代码>。添加大括号以防止将来发生此类情况:
if (num2.equals(num1.reverse().toString())) {
System.out.println(num);
break;
}
还要注意,如果(someBoolean==true)
写if是多余的,只需写if(someBoolean)
就可以防止错误赋值(=
而不是=
)。请。。缩进你的代码
老实说,当我查看您的代码时,我没有注意到这一点,但我使用了调试器,在不到5秒钟的时间内发现了问题。有一个调试器。。用它 在您的if
语句周围加上大括号:
if (num2.equals(num1.reverse())==true) {
System.out.println(num);
break;
}
不使用大括号将只执行作为块一部分的条件后的第一条语句。如果语句:
if (num2.equals(num1.reverse())==true) {
System.out.println(num);
break;
}
不使用大括号将只执行作为块一部分的条件后的第一条语句。您的代码缩进不良,这就是您没有发现错误的原因。每次迭代后都会中断
if (num2.equals(num1.reverse())==true) {
System.out.println(num);
break;
}
不在if语句周围使用大括号是可以的,但我建议在学习时尝试在所有语句周围使用大括号。您的代码缩进不良,这就是您没有发现错误的原因。每次迭代后都会中断
if (num2.equals(num1.reverse())==true) {
System.out.println(num);
break;
}
不要在if语句周围使用大括号是可以的,但我建议在学习时尝试在所有语句周围使用大括号。您可以去掉StringBuilder
和num2
并检查ik,如下所示:
if (num.equals(num.reverse())) {
//...
}
这样你可以找到一个回文,但是没有信心它是由两个3位数字的乘积生成的。它可以是两个素数的乘积,一个2位数,另一个4位数。你必须检查所有3位数字的乘积,看看它是否有回文。你可以去掉StringBuilder
和num2
,然后像这样检查ik:
if (num.equals(num.reverse())) {
//...
}
这样你可以找到一个回文,但是没有信心它是由两个3位数字的乘积生成的。它可以是两个素数的乘积,一个2位数,另一个4位数。您必须检查所有3位数字的乘积,看看它是否构成回文。此外,比较是在String
和StringBuilder
之间进行的,后者将始终给出false
。此外,比较是在String
和StringBuilder
之间进行的,后者将始终给出false
。除了将断点移动到if块中之外,请记住,除了将断点移动到if块中之外,您还需要一个最大的数字,即2个三位数的乘积(您目前只找到小于999*999的最大数字),请记住,您需要的最大数字是2个三位数的乘积(您目前只找到小于999*999的最大数字)