读取文本文件并将其放入数组中

时间:2015-04-26 17:32:40

标签: java arrays

我试图从文本文件中取一组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(数组);     }

3 个答案:

答案 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循环如何将迭代器变量集成到一个很好的优雅行中,保持代码的其余部分整洁可读。