2014-10-17 137 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 

請務必當你準備好和贊成票任何答案或建議您標記的最佳答案感覺有幫助。不僅僅是對於這個問題,你在哪裏是原始的海報,而是針對其他問題的線索。