Java: 无法访问方法
Java: Can't access method
这是我在 Whosebug 上的第一个问题,如果我做的不对,请告诉我。无论如何,我已经进行了相当彻底的搜索,但似乎无法找到我的问题的答案。我想访问的方法不会在 Java (Jgrasp) 上访问。我不确定为什么,因为我觉得我使用了正确的符号。
//PROJECT EULER Problem #4
//A palindromic number reads the same both ways. The largest palindrome made
//from the product of two 2-digit numbers is 9009 = 91 × 99.
//Find the largest palindrome made from the product of two 3-digit numbers.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class PE4
{
public boolean isPalindrome(int five)
{
String word = Integer.toString(five);
if (word.length()==5 &&word.substring(0,2).equals(word.substring(3,5)))
return true;
else if(word.length()==6 &&word.substring(0,3).equals(word.substring(3,6)))
return true;
else
return false;
}
public static void NumberFinder()
{
for (int i=999; i>599; i--)
{
for (int j=999; j>i-300; j--)
{
if (isPalindrome(i*j)==true)
{
System.out.print(i + ", " + j + " = " + i*j);
break outerloop;
}
}
}
return 0;
}
PE4 tester = new PE4();
tester.NumberFinder();
}
感谢您花时间阅读我的问题。
安娜
在 Java 中,没有可以在 class 方法范围之外执行的代码。当你的程序是运行时,默认执行class的main函数。因此,您应该向 class 添加一个 main 方法并在其中调用 NumberFinder 方法。
另一点是 NumberFinder 是静态的,因此可以直接在 class 上调用它而无需创建 class 的对象。
第三点是静态方法无法访问非静态方法,因此您的 isPalindrome 方法也应该是静态的。
将您的顶层代码放入 main 方法中:
public static void main(String[] args) {
PE4 tester = new PE4();
tester.NumberFinder();
}
但这只是第一步。您还必须从 NumberFinder
方法中删除 static
并修复您的算法,该算法实际上不会检测回文数字。提示:new StringBuilder(word).reverse().toString().equals(word)
这是我在 Whosebug 上的第一个问题,如果我做的不对,请告诉我。无论如何,我已经进行了相当彻底的搜索,但似乎无法找到我的问题的答案。我想访问的方法不会在 Java (Jgrasp) 上访问。我不确定为什么,因为我觉得我使用了正确的符号。
//PROJECT EULER Problem #4
//A palindromic number reads the same both ways. The largest palindrome made
//from the product of two 2-digit numbers is 9009 = 91 × 99.
//Find the largest palindrome made from the product of two 3-digit numbers.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class PE4
{
public boolean isPalindrome(int five)
{
String word = Integer.toString(five);
if (word.length()==5 &&word.substring(0,2).equals(word.substring(3,5)))
return true;
else if(word.length()==6 &&word.substring(0,3).equals(word.substring(3,6)))
return true;
else
return false;
}
public static void NumberFinder()
{
for (int i=999; i>599; i--)
{
for (int j=999; j>i-300; j--)
{
if (isPalindrome(i*j)==true)
{
System.out.print(i + ", " + j + " = " + i*j);
break outerloop;
}
}
}
return 0;
}
PE4 tester = new PE4();
tester.NumberFinder();
}
感谢您花时间阅读我的问题。
安娜
在 Java 中,没有可以在 class 方法范围之外执行的代码。当你的程序是运行时,默认执行class的main函数。因此,您应该向 class 添加一个 main 方法并在其中调用 NumberFinder 方法。 另一点是 NumberFinder 是静态的,因此可以直接在 class 上调用它而无需创建 class 的对象。 第三点是静态方法无法访问非静态方法,因此您的 isPalindrome 方法也应该是静态的。
将您的顶层代码放入 main 方法中:
public static void main(String[] args) {
PE4 tester = new PE4();
tester.NumberFinder();
}
但这只是第一步。您还必须从 NumberFinder
方法中删除 static
并修复您的算法,该算法实际上不会检测回文数字。提示:new StringBuilder(word).reverse().toString().equals(word)