2013-11-22 306 views
1

如何使用一維數組來存儲二維數組的一維? 這是我迄今爲止,我只是不能讓1D數組存儲任何二維數組。2維陣列

編輯:循環正常工作。我只需要製作2個一維數組來存儲2維數組的每個維度。

int[][] tutorData = { // students per day (MTW) per tutor 
    {25, 3, 0}, // Amy 
    {14, 5, 12}, // John 
    {33, 22, 10}, // Nick 
    {0, 20, 5}}; // Maria 

int numOfDays = tutorData[0].length; // number of days = number of "columns" 
int numOfTutors = tutorData.length; // number of tutors = number of "rows" 

int[] sumPerDay = {tutorData[i]}; 
sumPerDay = new int [numOfDays]; // array to store total # of students per day 
int[] sumPerTutor = {tutorData[j]}; 
sumPerTutor = new int[numOfTutors]; // array to store total # of students per tutor 

for (int i = 0; i < tutorData.length; i++) { 
     for (int j = 0; j < tutorData[i].length; j++) { 
      if (j == 0) { 
       System.out.println("Tutor " + (i + 1) + " met: " + tutorData[i][j] + "students on (M) "); 
      } 
      if (j == 1) { 
       System.out.println("Tutor " + (i + 1) + " met: " + tutorData[i][j] + "students on (T) "); 
      } 
      if (j == 2) { 
       System.out.println("Tutor " + (i + 1) + " met: " + tutorData[i][j] + "students on (W) "); 
      } 
      System.out.println(); 
     } 

回答

0

你需要通過你的嵌套循環和二維數組迭代將每個列和行中的值總和保存到2個不同的數組中。

int[][] tutorData = { // students per day (MTW) per tutor 
       {25, 3, 0}, // Amy 
       {14, 5, 12}, // John 
       {33, 22, 10}, // Nick 
       {0, 20, 5}}; // Maria 

int numOfDays = tutorData[0].length; // number of days = number of "columns" 
int numOfTutors = tutorData.length; // number of tutors = number of "rows" 
int[] sumPerDay = new int [numOfDays]; // array to store total # of students per day 
int[] sumPerTutor = new int[numOfTutors]; // array to store total # of students per tutor 

for(int i=0; i<numOfDays; i++){ 
    for(int j=0; j<numOfTutors; j++){ 
     sumPerDay[i] += tutorData[j][i]; 
     sumPerTutor[j] += tutorData[j][i]; 
    } 
} 

sumPerDay將包含在每一列的值的總和=學生的每一天的總數量。

sumPerTutor將包含每行中的值的總和=每個導師的學生總數。

+0

謝謝,幫助了很多! – Indyvette

3

這將是一個二維數組,因爲tutorData[i]是一個數組:

int[] sumPerDay = {tutorData[i]}; 

試試這個:

int[] sumPerDay = tutorData[i]; 
+0

唯一有這個是我有一個for循環打印二維數組(定義i和j作爲int(s)),但由於2個1D數組是在循環之前聲明它衝突,並仍然打印0時我做了調整 – Indyvette

+0

然後問題是你沒有發佈代碼包含for循環,所以我們可以給你的建議,你需要... ;-) – Axel