Java:无法访问方法

时间:2016-09-02 15:43:45

标签: java methods jgrasp

这是我在StackOverflow上的第一个问题所以请告诉我,我是不是做得对。无论如何,我搜索得相当彻底,但似乎无法找到我的问题的答案。我不想在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();


}

感谢您抽出宝贵时间阅读我的问题。

安娜

2 个答案:

答案 0 :(得分:0)

在Java中,没有可以在类方法范围之外执行的代码。运行程序时,默认执行类的主要功能。因此,您应该在类中添加一个main方法,并在其中调用NumberFinder方法。 另一点是NumberFinder是静态的,因此它可以直接在类上调用而无需创建类的对象。 第三点是静态方法不能访问非静态方法,因此你的isPalindrome方法也应该是静态的。

答案 1 :(得分:0)

将您的顶级代码放在main方法中:

public static void main(String[] args) {
  PE4 tester = new PE4();
  tester.NumberFinder();
}

但这只是第一步。您还必须从static方法移除NumberFinder并修复您的算法,该算法实际上并未检测到回文数字。提示:new StringBuilder(word).reverse().toString().equals(word)