2014-04-27 27 views
0

我在Java程序中遇到了一些麻煩。我有一個txt數據文件,我將顯示,我需要添加到兩個單獨的數組中。該文本文件是8行,應該分成兩個單獨的4x4矩陣。這個程序的一些背景信息,讀入兩個數組,比較它們並輸出相同索引的最大元素,並將它們輸出到一個單獨的數組中。我似乎無法弄清楚如何將數據文件添加到兩個單獨的數組中。我的代碼如下,預先感謝。在Java中將數據文件添加到兩個獨立的2D陣列中

數據文件:

2 7 6 4 
6 1 2 4 
9 7 2 6 
8 3 2 1 
4 1 3 7 
6 2 3 8 
7 2 2 4 
4 2 3 1 

代碼:

public class prog465a 
{ 
    public static void main(String[] args) { 
     Scanner inFile = null; 
     try 
     { 
      inFile = new Scanner(new File("prog465a.dat.txt")); 
     } 

     catch(FileNotFoundException e) 
     { 
      System.out.println("File not found!"); 
      System.exit(0); 
     } 

     int[][] firstData = new int[4][4]; 
     int[][] secondData = new int[4][4]; 
     int[][] finalData = new int[4][4]; 
     for (int i = 0; i< 8; i++) 
     { 
      for(int j = 0; j < 8; j++) 
      { 
       if (i < 4 && j < 4){ //Trying to add first four lines to one matrix 
        firstData[i][j] = inFile.nextInt(); 
       } else if (i >= 4 && j >= 4) 
       { 
        secondData[i][j] = inFile.nextInt();   
       } 
      } 
     } 

     for (int i = 0; i< 8; i++) 
     { 
      for(int j = 0; j < 8; j++) 
      { 
       if (firstData[i][j] >= secondData[i][j]) 
       { 
        firstData[i][j] = finalData[i][j]; 
       } 
       else if (secondData[i][j] >= firstData[i][j]) 
       { 
        secondData[i][j] = finalData[i][j]   
       } 

      } 
     } 

      for (int c = 0 ; c < finalData.length ; c++) 
     { 
     for (int d = 0 ; d < finalData.length ; d++) 
     { 
       System.out.print(finalData[c][d]+" ");   
      } 
     System.out.print("\n"); 
     } 

    } 
} 

回答

0

的問題是,你正在試圖解析與8行8列文件..

改變這樣的:

int[][] finalData = new int[4][4]; 
    for (int i = 0; i< 8; i++) 
    { 
     for(int j = 0; j < 8; j++) 

到:

int[][] finalData = new int[4][4]; 
    for (int i = 0; i< 8; i++) 
    { 
     for(int j = 0; j < 4; j++) 

這意味着8行文件的每個4列。

也在你的for循環的第二部分你又試圖讓8×8矩陣應該是4×4 ..

變化:

for (int i = 0; i< 8; i++) 
    { 
     for(int j = 0; j < 8; j++) 
     { 
      if (firstData[i][j] >= secondData[i][j]) 
      { 
       firstData[i][j] = finalData[i][j]; 
      } 
      else if (secondData[i][j] >= firstData[i][j]) 
      { 
       secondData[i][j] = finalData[i][j]   
      } 

     } 
    } 

到:

for (int i = 0; i< 4; i++) 
    { 
     for(int j = 0; j < 4; j++) 
     { 

      if (firstData[i][j] >= secondData[i][j]) 
      { 
       finalData[i][j] = firstData[i][j]; 
      } 
      else if (secondData[i][j] >= firstData[i][j]) 
      { 
       finalData[i][j] = secondData[i][j] ;   
      } 

     } 
    } 
+0

非常感謝您的幫助!現在完美! – hornet2359