无法在main方法中调用方法
我试图用另一种方法(比如在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); } }
为什么我不能这样调用这个方法?
您无法在static
上下文中访问non static
方法。
由于main方法是静态的,因此无法访问其中的非static
方法。
可能的解决方案:
解决方案1。
制作你的GetNumbers();
static
。 然后你就可以访问它了。
private static void GetNumbers() { }
但是,我不会在你的情况下推荐,因为你也在GetNumbers()
方法中访问其他instnace mebers。 所以它们也需要是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命名约定 ,变量名称统计信息与小写字母。
public int firstNumber; public int secondNumber; public int answer;
GetNumbers();
需要保持static
。 静态方法只能调用static method
或使用static fields
。
但是,如果Exercise1
的object
实例是main()
本地实例,则它可以访问object.GetNumber()
main()
。 也就是说,在main()
方法中创建Exercise1
的实例对象以访问该Exercise1
对象的GetNumber()
方法。
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); } }