【问题标题】:Call a method in the Static void main在静态 void main 中调用方法
【发布时间】:2018-10-22 11:23:28
【问题描述】:
我的方法是这样的:
public static String[] getcontestants(String[] contestants) {
int numcontestants = 8;
String name[] = new String[numcontestants];
for (int j = 0; j < numcontestants; j++) {
Scanner ip = new Scanner(System.in);
System.out.println("Enter contestant's name");
name[j] = ip.nextLine();
}
return name;
}
我想在静态 void main 中调用这个方法,但我不知道该怎么做。告诉我这个方法是否有任何错误。谢谢!
【问题讨论】:
标签:
java
arrays
methods
static
void
【解决方案1】:
所以,我更喜欢 Maarten Bodewes 的回答,但我认为这对您来说可能更容易理解。
主要:
public static void main(String[] args) {
String[] contestants = getcontestants();
}
我稍微编辑了你的函数:
public static String[] getcontestants()
{
int numcontestants=8;
String name[] = new String[numcontestants];
for(int j=0;j<numcontestants;j++){
Scanner ip=new Scanner(System.in);
System.out.println("Enter contestant's name");
name[j]=ip.nextLine();
}
return name;
}
希望能回答您的问题!
【解决方案2】:
你可以使用
MyClass.getcontestants(new String[] { "MS", "MR" });
其中MyClass 是包含该方法的类。如果您的 main 方法在同一个 MyClass 类中,您可以省略 MyClass.。
这是对您问题的直接回答。如果您查看类的设计,那么Hadeems answer 会告诉您不需要将String 数组传递给方法;扫描仪可以在本地使用。
【解决方案3】:
您不需要在此方法中创建扫描仪对象(它会创建与循环一样多的对象,这不是标准的编码方式,而且根本没有效率)。
在类中的方法之外声明static Scanner ip = new.... ; 为全局变量。 (static - 所以它只是一个实例)
class YourClassName{
static Scanner ip = new....;
public static void main(String [] args){
//String[] inputStringArray = getcontestants( //new String (){"my", "text", "as", "string", "array"});
// Why passing string array to the function where actually you are taking input from user
// Better don't pass anything except length of the string array
String[] inputStringArray = getcontestants(contestanstCount);
}
public static String[] getcontestants(..){}
}
【解决方案4】:
这里是代码。试试看。
import java.util.Scanner;
公开课 AmadouQuestion {
public static void main(String[] args) {
String [] names = getcontestants(3);
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}
}
public static String[] getcontestants(int numcontestants)
{
Scanner ip=new Scanner(System.in);
String[] names = new String[numcontestants];
for(int j=0;j<numcontestants;j++){
System.out.println("Enter contestant's name");
names[j]=ip.nextLine();
}
ip.close();
return names;
}
}