Amadou Toure
Amadou Toure

Reputation: 15

Call a method in the Static void main

Hy my method is this:

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

I would like to call this method in the static void main but I don't exactly know how to do it. Tell me if there's any mistake in this method. Thanks!

Upvotes: 1

Views: 69

Answers (4)

Anil Patel
Anil Patel

Reputation: 11

here is the code. Try it.

import java.util.Scanner;

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

}

Upvotes: -1

Abid Khan
Abid Khan

Reputation: 309

You don't need to create scanner object in this method (it will create as many objects as the loop goes which is not the standard way of coding & not efficient at all).

Declare static Scanner ip = new.... ; outside the method within a class as global variable. (static - so that it's only one instance)

 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(..){}
 }

Upvotes: 0

Maarten Bodewes
Maarten Bodewes

Reputation: 94018

You can just use

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

where MyClass is the class that contains the method. You can leave out MyClass. if your main method is in the same MyClass class.


This is a direct answer to your question. If you look at the design of your class then Hadeems answer shows you that you don't need to pass the String array to the method; the scanner can be used locally.

Upvotes: 1

Haris Nadeem
Haris Nadeem

Reputation: 1314

So tbh, I like Maarten Bodewes's answer better, but I think this might be a bit easier for you to understand.

Main :

public static void main(String[] args) {
    String[] contestants = getcontestants();
}

I edited Your function just a bit:

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

Hope that answers your question!

Upvotes: 1

Related Questions