编写简易加法程序时主类无法识别adder方法的问题求助
为何主类无法识别adder方法?
我编写了一个简易加法程序,将adder方法移到单独的类后,主类第14行出现以下编译错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method Adder(int, int) is undefined for the type tester
at Relearn.tester.main(tester.java:14)
主类代码(tester.java):
public static void main(String[] args) { Scanner keyboard = new Scanner (System.in); int number1; int number2; int result = 0; System.out.println("Enter the first number"); number1 = keyboard.nextInt(); System.out.println("Enter the second number"); number2 = keyboard.nextInt(); result = adder(number1, number2); // 报错行 System.out.println(result); keyboard.close(); } }
方法类代码(methodology.java):
package Relearn; public class methodology { public static int adder(int number1, int number2) { int num1 = number1; int num2 = number2; int sum = num1 + num2; return sum; } }
此前将adder方法放在主类中用private修饰时能正常运行,移到另一个类后就报错了,求解决办法。
问题原因及解决方案
1. 静态方法调用方式错误
adder是methodology类的静态方法,跨类调用静态方法必须通过类名.方法名()的格式,不能直接写方法名(仅同类别内调用可省略类名)。
修改主类中的调用代码:
result = methodology.adder(number1, number2);
2. 包与导入问题
- 如果主类
tester不在Relearn包下,必须在主类开头导入methodology类:import Relearn.methodology; - 如果主类在
Relearn包下,要确保主类顶部添加包声明,同时别忘了导入Scanner类(你当前主类代码缺少这个导入,也会引发编译错误):package Relearn; import java.util.Scanner; public class tester { public static void main(String[] args) { // ... 原有逻辑代码 } }
3. 大小写敏感问题
错误提示中显示的是Adder(int, int)(首字母大写),但你定义的方法名是adder(小写)。Java对大小写严格敏感,必须保证调用时的方法名和定义完全一致,避免拼写错误。
代码优化(可选)
methodology类中的代码可以简化,无需额外赋值变量:
package Relearn; public class methodology { public static int adder(int number1, int number2) { return number1 + number2; } }
内容的提问来源于stack exchange,提问作者HatCode03
相关产品推荐
相关产品推荐

