Java求助:调用printArray(int[])时报错‘该方法对Array_1m类型未定义’
解决方法:The method printArray(int[]) is undefined for the type Array_1m
这个错误逻辑很清晰——你的Array_1m类里压根没定义printArray(int[])方法,Java虚拟机找不到这个方法的实现代码,所以在main方法里调用它时就会抛出这个报错。下面给你两种直接可行的解决思路:
思路1:在Array_1m类中直接实现printArray方法
因为main是静态方法,静态方法只能直接调用同类的静态成员,所以你要实现的printArray也得标记为静态。修改后的完整代码如下:
import java.util.Scanner; public class Array_1m { public static void main(String[] args) { int[] intarray = new int[]{1, 2, 3, 4, 5}; System.out.println("Here are our starting arrays"); printArray(intarray); // 现在可以正常调用了 System.out.println("What would you like to do?"); System.out.println(""); } // 新增静态的printArray方法,负责遍历打印数组 public static void printArray(int[] arr) { for (int num : arr) { System.out.print(num + " "); } System.out.println(); // 打印完数组后换行收尾 } }
思路2:调用你提到的“数组类”中的printArray方法
如果你说的那个独立数组类里已经写好了printArray方法,那要根据方法的类型调整调用方式:
- 如果是实例方法:必须先创建数组类的对象,再通过对象调用方法
- 如果是静态方法:直接通过数组类的类名调用即可
假设你的数组类叫MyArray,给你举两个具体例子:
情况A:数组类中的printArray是实例方法
import java.util.Scanner; public class Array_1m { public static void main(String[] args) { int[] intarray = new int[]{1, 2, 3, 4, 5}; System.out.println("Here are our starting arrays"); // 先创建数组类的实例对象 MyArray arrayHandler = new MyArray(); arrayHandler.printArray(intarray); // 通过对象调用实例方法 System.out.println("What would you like to do?"); System.out.println(""); } }
情况B:数组类中的printArray是静态方法
import java.util.Scanner; public class Array_1m { public static void main(String[] args) { int[] intarray = new int[]{1, 2, 3, 4, 5}; System.out.println("Here are our starting arrays"); // 直接通过类名调用静态方法 MyArray.printArray(intarray); System.out.println("What would you like to do?"); System.out.println(""); } }
另外要注意:如果两个类不在同一个包下,数组类的printArray方法必须用public修饰,否则会触发访问权限错误。
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

