如何在static void main中调用指定方法?请排查方法错误
问题分析与解决方案
首先,咱们先看看你这个方法里存在的几个小问题:
- 方法接收了一个
String[] contestants参数,但整个方法里根本没用到它,属于冗余参数,完全可以去掉; - 在for循环内部每次都新建
Scanner对象,这会造成不必要的资源消耗,应该把Scanner的实例化放到循环外面; - Java方法名规范是小驼峰命名,
getcontestants应该改成getContestants; - 数组声明
String name[]虽然合法,但更推荐String[] name的写法,符合主流编码规范。
修正后的方法代码
import java.util.Scanner; public class ContestantHandler { // Java代码必须包裹在类中,这里用示例类名 public static String[] getContestants() { int numContestants = 8; String[] names = new String[numContestants]; Scanner ip = new Scanner(System.in); // 将Scanner实例化移到循环外 for (int j = 0; j < numContestants; j++) { System.out.println("Enter contestant's name"); names[j] = ip.nextLine(); } ip.close(); // 使用完毕后关闭Scanner,释放资源 return names; } // main方法中调用的示例 public static void main(String[] args) { // 调用方法获取选手名字数组 String[] contestantNames = getContestants(); // 遍历输出验证结果 System.out.println("\nAll contestants:"); for (String name : contestantNames) { System.out.println("- " + name); } } }
调用说明
在main方法里调用非常直观:
- 因为
getContestants是静态方法,和main在同一个类中的话,直接写getContestants()就能调用;如果不在同一个类,就用类名.getContestants()的形式; - 将方法返回的字符串数组赋值给一个变量(比如
contestantNames); - 之后你可以对这个数组做任何操作,比如遍历、筛选、存储到集合中等。
另外要注意:所有Java方法都必须放在类的内部,所以上面的代码我添加了一个示例类作为容器,你可以根据实际需求修改类名。
内容的提问来源于stack exchange,提问作者Amadou Toure
相关产品推荐
相关产品推荐

