使用包含双精度

时间:2016-09-10 02:08:50

标签: java arrays

我正在进行一个类赋值,我们只能使用数组而不使用Collection类来读取文本文件,并使用文本文件中的信息填充数组。文件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(); 
     }  
}

首先,这个逻辑是否有意义?其次,我不断得到一个数组越界错误,所以我知道一些事情是对的,我只是不确定在哪里。

1 个答案:

答案 0 :(得分:0)

删除while。你希望身体只执行一次。文件末尾的换行符可能会导致它再次运行,然后就不会有nextInt()。如果要支持空文件,请将其设为if

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

最后,largeArray应该是数组double[][](一个所谓的锯齿状数组)的数组,并且您希望在填充后将insideArray指定给相应的位置。