我想我明白了混淆的地方。也许这会有所帮助。
首先,我认为你应该理解关于Java的一些非常重要的东西。
您的主要方法是运行的FIRST方法。
所以我们来简单介绍一下如何在没有IDE的情况下创建Java程序。 首先,您将代码写入文本文件,并在完成后将其重命名为arraysAndMethods.java。接下来我们需要把你的代码放到一个可以被计算机使用的表单中,它首先通过命令行从下面的代码中编译成字节代码:
javac arraysAndMethods.java
编译完成后,你可以用这个命令运行程序:
java arraysAndMethods
如果没有问题,程序将运行。 你说你想把变量传入主方法中?这里是你如何做到这一点的命令行:
java arraysAndMethods 45.6 38.2 5.5 105.3
看你的主要方法,它采用下列参数:(String args[])
所以你的情况,该45.6 38.2 5.5 105.3
将被传递到您的主要方法为一个字符串数组。第一项是45.6
,其次是38.2
,然后是5.5
,最后是105.3
。 它会看起来像这样的阵列:["45.6"],["38.2"],["5.5"],["105.3"]
但他们都是字符串和不是双打。
所有这一切都是说,如果你想将某些东西传递给你的主要方法,你需要通过命令行来完成,或者查看你的个人IDE(如Eclipse,Netbeans等)。 )处理。
所以回顾一下:main方法中的参数是从控制台进来的,除非有其他的规范被创建,并且在你的情况下它返回一个double类型的数组。
我知道这是相当冗长的,但忍耐着我,我差不多完成了。
当一个Java程序运行时(我在这里简化了一下),它进入主方法并执行它看到的第一行。当它完成后,它会进入下一行,等等,直到它到达主方法的末尾。然后程序完成。
所以一切都必须在主要方法中完成。尽管可以从主方法调用其他类和方法。
现在,你有解释,这里是我会做什么来修复您的代码:
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
请务必当你准备好和赞成票任何答案或建议您标记的最佳答案感觉有帮助。不仅仅是对于这个问题,你在哪里是原始的海报,而是针对其他问题的线索。
'int x = arraysAndMethods.main(double [i] arr);'main的输入是字符串数组,你是如何向方法发送一个double的?最好将方法的名称从'main'改为别的。 – Reza 2014-10-17 18:59:16
你为什么要问一个问题两次?http://stackoverflow.com/questions/26429681/java-main-method-called – Reza 2014-10-17 20:00:16