Вызовите метод в Static void main - PullRequest
0 голосов
/ 12 мая 2018

Hy мой метод таков:

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;
}

Я хотел бы вызвать этот метод в static void main, но я точно не знаю, как это сделать. Скажите, есть ли ошибка в этом методе? Спасибо!

Ответы [ 4 ]

0 голосов
/ 12 мая 2018

вот код.Попробуйте.

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;
}

}

0 голосов
/ 12 мая 2018

В этом методе не нужно создавать объект сканера (он создаст столько объектов, сколько выполняется цикл, что не является стандартным способом кодирования и вообще неэффективно).

Объявить 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(..){}
 }
0 голосов
/ 12 мая 2018

Итак, мне больше нравится ответ Мартена Бодьюса, но я думаю, что вам будет немного легче его понять.

Основной:

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;
}

Надеюсь, что ответит на ваш вопрос!

0 голосов
/ 12 мая 2018

Вы можете просто использовать

MyClass.getcontestants(new String[] { "MS", "MR" });

, где MyClass - это класс, содержащий метод.Вы можете опустить MyClass., если ваш main метод относится к тому же классу MyClass.


Это прямой ответ на ваш вопрос.Если вы посмотрите на дизайн вашего класса, то ответ Hadeems показывает, что вам не нужно передавать массив String в метод;сканер может использоваться локально.

...