我试图从文本文件中取一组25个数字并将其转换为数组。但我迷路了。
我已经阅读了一些与此相似的其他问题,但所有这些问题都使用了导入和附加内容,除了导入java.io. *之外我不想使用任何导入。也没有任何清单。 这个方法中的for循环就是我只是弄乱它,因为我无法弄明白。
UNIQUE_HANDLE
} public static void main(String [] args)抛出IOException,FileNotFoundException { int [] array = processFile(" C:\ Users \ griff_000 \ Desktop \ TestWeek13.txt"); printArray(数组); }
答案 0 :(得分:0)
你的错误在a[intValue]++;
行。您告诉Java在[intValue]中找到元素并将其添加到当前值。从你的问题,我明白你想把intValue作为数组元素。
由于您使用i
作为迭代器,因此要添加元素,只需使用:
a[i] = intValue;
答案 1 :(得分:0)
你在这做什么:
a[intValue]++;
将读取值的数组位置增加1。如果读取的数字是2000,则增加[2000]
您可能想要这样做
a[i]=intValue;
答案 2 :(得分:0)
我不清楚你的整个import
限制,为什么你要限制你的进口数量呢?
无论如何,看看你的代码,似乎数组的概念并不是那么清楚。
使用以下语法访问数组:
array[index] = value;
查看代码,行a[intValue]++;
实际上是找到数组索引intValue
(从文件读取的数字)并将其递增1。这不仅不是您想要的,数组长度上的数字将导致ArrayIndexOutOfBoundsException
。
我们得到了修改:
public static int[] processFile (String filename) throws IOException, FileNotFoundException{
BufferedReader inputReader = new BufferedReader (new InputStreamReader(new FileInputStream(filename)));
String line;
int[] a = new int[25];
int i = 0; // We need to maintain our own iterator when using a while loop
while((line = inputReader.readLine()) != null){
int intValue = Integer.parseInt(line); //converts string into int
a[i] = intValue; // Store intValue into the array at index i
i++; // Increment i
}
return a;
}
请注意在此上下文中使用的附加变量i
有助于增加用于访问数组的索引号。如果仔细检查此方法,由于变量ArrayIndexOutOfBoundsException
变为i
(超出数组的限制),超过25个元素的输入文件也会抛出25
。要修复,我建议将循环结构更改为for循环(假设您的输入数组是固定大小),如下所示:
public static int[] processFile (String filename) throws IOException, FileNotFoundException{
BufferedReader inputReader = new BufferedReader (new InputStreamReader(new FileInputStream(filename)));
String line;
int[] a = new int[25];
for(int i = 0; i < a.length; i++){
String line = inputReader.readLine(); // Move the readline code inside the loop
if(line == null){
// We hit EOF before we read 25 numbers, deal appropriately
}else{
a[i] = Integer.parseInt(line);
}
}
return a;
}
注意for循环如何将迭代器变量集成到一个很好的优雅行中,保持代码的其余部分整洁可读。