Java 项目赢得';不在Eclipse上运行,它不会';你不会给我一个错误吧?
所以我的Eclipse运行得很好,它编译了我需要的所有东西。现在我只写了代码,但它没有运行它,它什么都不做。我已经用其他代码测试了Eclipse,它工作得很好,所以我的代码有问题,但我不确定是什么问题 我正在努力完成欧拉项目的第四项挑战: 回文数字的两种读取方式相同。由两个两位数的乘积构成的最大回文是9009=91×99 查找由两个3位数字的乘积构成的最大回文 这是我的密码:Java 项目赢得';不在Eclipse上运行,它不会';你不会给我一个错误吧?,java,Java,所以我的Eclipse运行得很好,它编译了我需要的所有东西。现在我只写了代码,但它没有运行它,它什么都不做。我已经用其他代码测试了Eclipse,它工作得很好,所以我的代码有问题,但我不确定是什么问题 我正在努力完成欧拉项目的第四项挑战: 回文数字的两种读取方式相同。由两个两位数的乘积构成的最大回文是9009=91×99 查找由两个3位数字的乘积构成的最大回文 这是我的密码: package me.practice; public class Main{ public static vo
package me.practice;
public class Main{
public static void main(String[] args)
{
int palindrome = 0;
for(int i = 0; i < 900; i++)
{
int num = (100 + i) * 999;
String numString = Integer.toString(num);
String numString_reverse = new StringBuilder(numString).reverse().toString();
if(numString == numString_reverse)
{
palindrome = Integer.parseInt(numString);
System.out.println(palindrome);
break;
}
}
}
}
package me.practice;
公共类主{
公共静态void main(字符串[]args)
{
int回文=0;
对于(int i=0;i<900;i++)
{
整数=(100+i)*999;
字符串numString=Integer.toString(num);
字符串numString_reverse=新的StringBuilder(numString).reverse().toString();
if(numString==numString\u反向)
{
palindrome=Integer.parseInt(numString);
System.out.println(回文);
打破
}
}
}
}
编辑:我也尝试在Netbeans上运行它,但它不起作用,所以Eclipse很好。
if(numString == numString_reverse)
与
第一个if语句比较的是字符串引用(每次都是false),而不是它们的内容,这是上面第二个if语句所做的。问题在于代码: if块永远不会执行,因为两个3位数字相乘得到的最大回文是906609,这是993乘以913得到的 下面给出的上一个解决方案是错误的,对此我深表歉意:
package stackoverflow;
public class Palindrome {
public static void main(String[] args)
{
int palindrome = 0;
for(int i = 101; i < 999; i++) {
for(int j=101; j<999; j++) {
System.out.println("inside for loop");
int num = i * 999;
String numString = Integer.toString(num);
String numString_reverse = new StringBuilder(numString).reverse().toString();
if(numString.equals(numString_reverse)) {
System.out.println("inside if block");
palindrome = Integer.parseInt(numString);
System.out.println(palindrome);
break;
}
}
}
}
}
package stackoverflow;
public class Palindrome2 {
public static void main(String[] args) {
int palindrome;
for(int i=900; i<999; i++) {
for(int j=901; j<999; j++) {
int value=i*j;
String result=Integer.toString(value);
String revResult=new StringBuffer(result).reverse().toString();
if(result.equals(revResult)) {
System.out.println(i);
System.out.println(j);
palindrome=Integer.parseInt(result);
System.out.println(palindrome);
}
}
}
}
}
包堆栈溢出;
公共类回文{
公共静态void main(字符串[]args)
{
int回文=0;
对于(int i=101;i<999;i++){
对于(int j=101;jj)代码的其余部分在哪里?您不能只运行松散的函数,它们需要在一个可以编译的类中。可能您还没有使用类来包装您的主方法。关于“…所以Eclipse很好”
,当然,记住一个好的经验法则是很好的:如果你认为bug出现在Java、Eclipse或类似的东西中,99.99%的时间你(和我)将是错误的。如果numString==numString\u reverse
返回false,您可以添加一个else语句来打印消息吗?这样您就可以看到您的代码是否从未找到回文,而不是根本没有运行。另外,请务必阅读。好的,我这样做了,但它似乎仍然没有运行。我不知道您正在谈论的挑战,你确定你的数字序列中有回文吗?在最里面的中添加else
语句如果,你应该会看到所有丢弃的数字。为什么块永远不会运行?使用for(int i=0;i<900;i++)
投反对票的原因是……?因为你的答案没有解释什么是反对票wrong@ScaryWombat,if块永远不会作为两个数字的乘积执行,一个是0-900,另一个是999,永远不会返回。请仔细查看if块。此外,999*999是998001,而不是999999。
package stackoverflow;
public class Palindrome2 {
public static void main(String[] args) {
int palindrome;
for(int i=900; i<999; i++) {
for(int j=901; j<999; j++) {
int value=i*j;
String result=Integer.toString(value);
String revResult=new StringBuffer(result).reverse().toString();
if(result.equals(revResult)) {
System.out.println(i);
System.out.println(j);
palindrome=Integer.parseInt(result);
System.out.println(palindrome);
}
}
}
}
}