2014-10-17 59 views
-1

如何从主方法传递数组到另一个方法?我在参数上有错误。我是否使用main的返回值?由于main的返回值是一个数组,main的调用参数是否应该有括号?这些括号之间应该有一个值吗?Java方法调用数组

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 
+0

'int x = arraysAndMethods.main(double [i] arr);'main的输入是字符串数组,你是如何向方法发送一个double的?最好将方法的名称从'main'改为别的。 – Reza 2014-10-17 18:59:16

+0

你为什么要问一个问题两次?http://stackoverflow.com/questions/26429681/java-main-method-called – Reza 2014-10-17 20:00:16

回答

1

只要通过名称,而不是类型。

int x = arraysAndMethods.main(arr); 

编辑: 除此之外,你的代码展示了一些其他问题。

  1. main(...)是您的应用程序的入口点。从另一种方法调用main(...)没有任何意义。它应该是相反的。
  2. main(...)必须具有以下签名:public static void main(String [] args)。你不能声明它返回一个double数组。
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]; 
0

你的主要方法是程序开始执行。换句话说,你应该从主内部调用printArray(),而不是以其他方式调用

0

我想我明白了混淆的地方。也许这会有所帮助。
首先,我认为你应该理解关于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 

请务必当你准备好和赞成票任何答案或建议您标记的最佳答案感觉有帮助。不仅仅是对于这个问题,你在哪里是原始的海报,而是针对其他问题的线索。