我在試圖弄清楚如何實現第二個數組來計算我的標記程序的平均值時遇到了一些困難。 我使用1個二維數組來存儲每個學生在每個作業中收到的分數 (5名學生,4個作業)。 我已經設法讓學生的平均數組工作,但是當我去計算每個單獨的分配標記時(總共5個學生/ 5)。我不斷收到一個Indexoutofbounds異常,我對2d ara非常新,我仍然試圖弄清楚如何正確讀取它們。 赫雷什我的代碼:初學者2D陣列越界異常
import java.util.Scanner;
public class Marks
{
private String[] names;
private int[][] assignments;
private double[] stuAvgArray;
private double[] assignAvgArray;
public Marks()
{
names = new String[5];
assignments = new int[5][4];
stuAvgArray = new double[5];
assignAvgArray = new double[4];
}
public void getInput()
{
Scanner input = new Scanner(System.in);
System.out.println("Enter 5 student names: ");
for(int i = 0; i < names.length; i++)
names[i] = input.nextLine();
for(int row = 0; row < assignments.length; row++)
{
System.out.println("Enter the 4 marks for: " + names[row]);
for(int col = 0; col < assignments[row].length; col++)
{
assignments[row][col] = input.nextInt();
stuAvgArray[row] += assignments[row][col];
}
stuAvgArray[row] = (stuAvgArray[row]/4);
}
for (int col = 0; col < assignments.length; col++)
{
for(int row = 0; row < assignments[col].length; row++)
assignAvgArray [行] + =分配[行] [COL];
assignAvgArray[col] = (assignAvgArray[col]/5);
}
}
public String toString()
{
String output = ("Student \t\t\t Marks \t\t\t\t Average \n" +
"Name \t\t\t\t out of 10 \t\t\t out of 10 \n" +
"\t\t A1 \t A2 \t A3 \t A4");
for(int i = 0; i < assignments.length; i++)
{
output = output + "\n" + names[i];
for(int col = 0; col < assignments[i].length; col++)
{
output = output + "\t " + assignments[i][col] + "\t ";
}
output = output + "\t\t" + stuAvgArray[i];
output = output + "\n" + assignAvgArray[i];
}
return output;
}
}
我已經加粗其中的Java說,錯誤的來源。我試圖讀入,存儲,然後計算陣列點[[(0,0),(1,0),(2,0),(3,0),(4,0)],[ (0,1),(1,1),(2,1),(3,1),(4,1).. etc]]
我試圖問的是如何創建一個循環這不會給我這個例外,將每列的所有值存儲到單獨的點中,並將存儲在新數組中的每個數字除以5以給出平均值。
如果還有其他事情可以幫助您理解我的問題,請告訴我。 PS:這就是它應該看起來像什麼;
Student Marks Average
Name out of 10 out of 10
A1 A2 A3 A4
Joe Smith 8 9 10 4 7.75
Tommy Jones 9 9 8 5 7.50
Sara Lee 0 10 10 9 7.25
Bob Fowler 10 9 9 0 7.00
Jane Doe 10 10 10 10 10.00
**Average 7.40 9.40 9.40 5.60**
我已經計算出該行平均水平,但中粗體的列平均是給我的悲傷
嗨那裏馬克西姆,謝謝你捕捉錯誤,但我仍然得到了約束錯誤,我認爲它與我的數組長度的差異。不知道雖然 – OGLOKE
的確,我在編輯我的答案。 –