2

我正在尝试在另一种方法中调用一个方法(例如在 C# 中),如下所示:

public class Exercise1
{
   Scanner scanner = new Scanner(System.in);
   public int FirstNumber;
   public int SecondNumber;
   public int Answer;

   public static void main(String [] args)
   {
       GetNumbers();
   }

   private void GetNumbers()
   {
       System.out.print("Type in the first number: ");
       FirstNumber = scanner.nextInt();

       System.out.print("Type in the second number: ");
       SecondNumber = scanner.nextInt();

       Answer = FirstNumber + SecondNumber;

       System.out.print("The answer is: " + Answer);
   }
}

为什么我不能这样调用方法?

4

3 回答 3

8

您不能在上下文中访问non static方法。static

由于 main 方法是静态的,因此您无法访问其中的非static方法。

可能的解决方案:

解决方案 1。

让你的 GetNumbers();as static. 然后你就可以访问它了。

  private static void GetNumbers()
   {
      }

但是,我不会在您的情况下推荐,因为您也在GetNumbers() 方法中访问其他实例成员。所以他们也需要static

解决方案 2。

在 main 方法中为类创建对象。Exercise1

  public static void main(String [] args)
   {
       Exercise1 ex= new Exercise1();
       ex.GetNumbers();
   }

   private  void GetNumbers()
   {
       System.out.print("Type in the first number: ");
       FirstNumber = scanner.nextInt();

       System.out.print("Type in the second number: ");
       SecondNumber = scanner.nextInt();

       Answer = FirstNumber + SecondNumber;

       System.out.print("The answer is: " + Answer);
   }

作为旁注:

请遵循java 命名约定,变量名 stats 用小写字母。

   public int firstNumber;
   public int secondNumber;
   public int answer;
于 2013-10-18T09:44:51.027 回答
4

GetNumbers();需要static。静态方法只能调用static method或使用static fields

但是,object.GetNumber()如果 的object实例Exercise1是本地的,它可以访问main(). 也就是说,创建一个Exercise1inmain()方法的实例对象来访问该Exercise1对象的GetNumber()方法。

于 2013-10-18T09:45:22.213 回答
2

main 是静态方法,而GetNumbers()不是静态方法,要么GetNumbers()变为静态,要么在 main 中创建对象,然后调用GetNumbers()

像这样

public class Exercise1
{
   Scanner scanner = new Scanner(System.in);
   public int FirstNumber;
   public int SecondNumber;
   public int Answer;

   public static void main(String [] args)

   {
Exercise1 e=new Exercise1();
       e.GetNumbers();
   }

   private void GetNumbers()
   {
       System.out.print("Type in the first number: ");
       FirstNumber = scanner.nextInt();

       System.out.print("Type in the second number: ");
       SecondNumber = scanner.nextInt();

       Answer = FirstNumber + SecondNumber;

       System.out.print("The answer is: " + Answer);
   }
}

或者

    public class Exercise1
{
   static Scanner scanner = new Scanner(System.in);
   public static int FirstNumber;
   public static int SecondNumber;
   public static  int Answer;

   public static void main(String [] args)

   {
GetNumbers();
   }

   private static void GetNumbers()
   {
       System.out.print("Type in the first number: ");
       FirstNumber = scanner.nextInt();

       System.out.print("Type in the second number: ");
       SecondNumber = scanner.nextInt();

       Answer = FirstNumber + SecondNumber;

       System.out.print("The answer is: " + Answer);
   }
}
于 2013-10-18T09:45:33.957 回答