Java方法调用数组

时间:2014-10-17 18:52:54

标签: java arrays methods

如何将数组从main方法传递给另一个方法?我的参数有错误。我是否使用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

4 个答案:

答案 0 :(得分:1)

只需传递名称,而不是类型。

int x = arraysAndMethods.main(arr);

编辑: 除此之外,您的代码还会显示其他一些问题。

  1. main(...)是您的应用程序的入口点。从另一种方法调用main(...)是没有意义的。它应该是相反的方式。
  2. main(...)具有以下签名:public static void main(String [] args)。你不能声明它返回一个double数组。

答案 1 :(得分:1)

这一切都没有多大意义。如果您希望将此作为Java程序的main方法,那么这将无效,因为main方法必须具有void返回类型。无论如何,这里有语法错误:

int x = arraysAndMethods.main(double[i] arr);//error with paremeters

相反它应该是

int x = arraysAndMethods.main(arr);//error with paremeters

因为变量已经被声明。我不确定你试图用double[i]做什么,但这种语法更像是一个声明,即

double[] someArrayName = new double[5];

答案 2 :(得分:0)

您的主要方法是程序开始执行的地方。换句话说,你应该从main中调用printArray(),而不是相反地调用

答案 3 :(得分:0)

我想我看到了混乱的地方。也许这会有所帮助 首先,我认为你应该理解一些关于Java的重要事项 您的主要方法是运行的第一种方法。

因此,让我们简要介绍一下如何在没有IDE的情况下创建Java程序。 首先,您在文本文件中编写代码,并在完成后将其重命名为arraysAndMethods.java。接下来,我们需要将您的代码放入一个可供计算机使用的表单中,首先使用以下命令行将其编译为字节码:
javac arraysAndMethods.java
编译完成后,您可以使用以下命令运行程序:
java arraysAndMethods
如果没有问题,您的程序将运行。 你说你想把变量东西传递给main方法吗?以下是从命令行执行此操作的方法:
java arraysAndMethods 45.6 38.2 5.5 105.3
查看主要方法,它需要以下参数:(String args[])
因此,在您的情况下,45.6 38.2 5.5 105.3将作为字符串数组传递到main方法中。第一个条目为45.6,后跟38.2,然后是5.5,最后是105.3。 它在数组中看起来像这样:["45.6"],["38.2"],["5.5"],["105.3"]但它们都是字符串不是 双打

所有这一切都是说如果你想将一些东西传递给你的main方法,你需要通过命令行来完成它,或者查看你的个人IDE(即Eclipse) ,Netbeans等)处理。

所以回顾一下:main方法中的参数是从控制台进来的,除非做出其他规范,在你的情况下,它返回一个double类型的数组。
我知道这很啰嗦,但请耐心等待,我差不多完成了 运行Java程序时(我在这里简化了一下),它进入main方法并执行它看到的第一行。当它完成后,它会进入下一行,依此类推,直到它到达main方法的末尾。然后程序完成。
所以一切都必须在main方法中完成。虽然您可以从main方法调用其他类和方法。
现在您已经有了解释,我将采取以下措施来修复您的代码:

public class arraysAndMethods {//Changed from arraysAndMethods to ArraysAndMethods because classes are always capitalized

public static void printArray(double[] arr) {//Added static so this could be used within the same class as the main method.
    //int x = arraysAndMethods.main(double[i] arr); No need for this line
    for (int i = 0; i < arr.length; i++)// Changed "studGrades.lenght" to arr.length
        System.out.print(arr[i] + " ");//Changed "studGrades" to arr
}// end of printArray method

public static void main(String args[]){// Changed the return type to "void". No need to return the 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
    printArray(arr);
    //return arr; No need for this line 
}// end of main method

}// end of class

请确保在准备就绪时标记最佳答案,并将您认为有帮助的任何答案或评论投票。不仅仅是这个问题,你是原始海报,还有其他问题主题。