【问题标题】:Java Main Method Called调用的 Java 主方法
【发布时间】:2023-03-16 11:10:01
【问题描述】:

我能否以及如何从 Java 中的另一个方法调用 main 方法?请使用以下代码进行说明:

public class arraysAndMethods {

    public void printArray(double[] arr) { 
        int x = public arraysAndMethods.main(int[] studGrades);
        // pass array in main mehthod to other methods
        //int a=main(args[]);
        for (int i = 0; i < studGrades.lenght; i++)
            System.out.print(studGrades[i] + " ");
    }// end of printArray method
    public static void main(String args[]){


        java.util.Scanner input = new java.util.Scanner(System.in); // input scanner

        System.out.println("What is the size of the class?");
        int n = input.nextInt();

        double studGrades[] = new double[n];

        for (int i = 0; i < studGrades.length;i++) {
            System.out.println("What is the grade of student #" + (i+1));
            studGrades[i] = input.nextDouble();
        } // end of for loop


    }// end of main method
}//end of class

编辑后:

除了传入的参数外,我已经弄清楚了。我是否使用 main 的返回值?既然main的返回值是一个数组,那么main调用的参数是否应该有括号?这些括号之间应该有一个值吗?

public class arraysAndMethods {
    public void printArray(double[] arr) {
        int x = arraysAndMethods.main(double[i] arr);//error with paremeters
        for (int i = 0; i < studGrades.lenght; i++)
            System.out.print(studGrades[i] + " ");
    }// end of printArray method
    public static double[] main(String args[]){// double array
        java.util.Scanner input = new java.util.Scanner(System.in); // input scanner
        System.out.println("What is the size of the class?");
        int n = input.nextInt();
        double[] arr = new double[n];// declare and initialize array to have n many elements
        for (int i = 0; i < arr.length;i++) {// input grades for each students
            System.out.println("What is the grade of student #" + (i+1));
            arr[i] = input.nextDouble();
        } // end of for loop
        return arr; 
    }// end of main method
}// end of class

【问题讨论】:

  • 这只是另一种方法:arraysAndMethods.main(new String[] { "foo", "bar" })...
  • 你为什么要这样做?
  • 把这个扔出去;除非您正在执行一些奇怪的引导或加载/管理操作,否则您应该永远直接调用 main 方法。

标签: java methods


【解决方案1】:

从另一个方法调用主方法通常被认为是不好的编程习惯。这可能会导致一系列问题,例如无限循环、无限递归等。您的主要方法应该包括程序需要运行的高级功能,您通常希望它尽可能简单。作为一种很好的“检查”,问问自己我可以把这个功能变成它自己的单独方法吗?如果是这样,那为什么不这样做呢?然后,如果您需要再次进行该调用,则可以使用单独的方法来执行此操作。

【讨论】:

    【解决方案2】:

    是的,您可以从另一个方法调用 main() 方法。我在单元测试期间完成了这项工作,以了解它是如何工作的。

    由于 main 是一个静态方法,您需要调用

    arraysAndMethods.main(/* parameters here */);
    

    将模拟的“命令行参数”作为参数传入。

    仅供参考,Java 的标准做法是以大写字母开头的类名。

    【讨论】:

    • 这不行,你需要传递一个字符串数组作为参数。
    • 我写道“模拟的‘命令行参数’应该作为参数传入。编辑以澄清这一点。
    • 另外,如果程序可以处理不带命令行参数的调用,理论上可以不带任何参数调用 main() 方法。
    • 对于传递给方法的数组,我应该使用什么语法?我有下面的代码,但在我的论点的括号内出现错误:int x = arraysAndMethods.main(arr);
    • @pbars23 2 cmets。 (1) arr 应该是一个字符串数组,而不是双精度数。 (2) main()方法是void,而不是返回一个int。
    【解决方案3】:

    它可以从另一个方法调用。在printArray()(例如)中,您可以这样做:

    String[] someArgs= new String[] {"monkey"};
    arraysAndMethods.main(someArgs);
    

    arrayAndMethods 类是静态方法,因此不必实例化。

    【讨论】:

      猜你喜欢
      • 2016-01-08
      • 2011-11-14
      • 2020-06-20
      • 2019-03-23
      • 1970-01-01
      • 2010-09-27
      • 2014-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多