【问题标题】: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;
        }
        

        }

        【讨论】:

        • 但问题是我不希望程序在最后打印名称
        猜你喜欢
        • 1970-01-01
        • 2018-10-27
        • 2019-06-21
        • 2015-12-19
        • 1970-01-01
        • 2014-08-25
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        相关资源
        最近更新 更多