2016-09-10 40 views
1

我在課堂作業,我們只能用數組和沒有集合類閱讀文本文件,並填寫從文本文件信息的數組工作。文件ArrayData.txt是以下信息。 該文件的格式以這種方式:填充與包含數組的數組雙打

3     //First line states how many sets are in the file 
2     //Next line:there are x numbers in the set 
10.22 567.98  //Next Line states the doubles that are in the set 
//The pattern continues from there 
1     // x numbers in the next set 
20.55    // Double in the set 
3 
20.55 2.34 100.97 

我的問題填充所述初始陣列的陣列,然後填充雙打第二陣列。

從本質上講,我希望它看起來像這樣:

initArray[0]=> smallArray[2]={10.22,5.67.98} 
initArray[1]=> smallArray[1]={20.55} 
initArray[2]=> smallArray[3]={20.55,2.34,100.97} 

這是我到目前爲止有:

public static double[] largeArray; 
    public static double[] insideArray; 
    public static void main(String[] args) { 

    String fileInputName = "ArrayData.txt"; 
    Scanner sc = null;   
    try { 
     sc = new Scanner(new BufferedReader(new FileReader(fileInputName))); 
     while (sc.hasNextLine()) {      


      int i = sc.nextInt(); 
      largeArray= new double[i]; 
      for(int x=0; x<i;x++) 
      { 
       int z = sc.nextInt(); 

        insideArray= new double[z]; 
       for(int y=0; y<z; y++) 
       { 
        insideArray[z]=sc.nextDouble(); 
       } 
      } 
     } 
    } 
    catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
    finally { 
     if (sc != null) 
      sc.close(); 
    } 
} 

首先,這是否邏輯甚至有意義嗎?其次,我一直得到一個數組超出界限的錯誤,所以我知道什麼是對的,我只是不知道在哪裏。

回答

0

取出while。你希望身體只執行一次。文件末尾的換行符可能導致它再次運行,然後將不會有nextInt()。如果您要支持空文件,請將其設置爲if

其次,insideArray[z] = ...insideArray[y] = ...

最後,largeArray應陣列double[][](所謂的鋸齒狀排列)的陣列,並且要填充之後分配insideArray到根據地方。

+0

這可能是一個愚蠢的問題,但你如何在largeArray的正確的地方分配insideArray?它會像largeArray [i] [insideArray] –

+0

'largeArray [x] = insideArray'。或者你可以直接使用'largeArray [x]'而不使用'insideArray'。 –

+0

非常感謝你!這固定了一切! –