我正在进行一个类赋值,我们只能使用数组而不使用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();
}
}
首先,这个逻辑是否有意义?其次,我不断得到一个数组越界错误,所以我知道一些事情是对的,我只是不确定在哪里。
答案 0 :(得分:0)
删除while
。你希望身体只执行一次。文件末尾的换行符可能会导致它再次运行,然后就不会有nextInt()
。如果要支持空文件,请将其设为if
。
其次,insideArray[z] = ...
应为insideArray[y] = ...
最后,largeArray
应该是数组double[][]
(一个所谓的锯齿状数组)的数组,并且您希望在填充后将insideArray
指定给相应的位置。