首页 > 解决方案 > 如何在数组中存储一行?

问题描述

我一直在尝试将 ling 存储在数组中的文本文件中,但我对此无能为力,也无法使用 ArrayList,这意味着它需要手动完成。这是我目前的代码。顺便说一句,文本文件中的第一行(标题)不应该包含在数组中。

public class Main {
    public static void main (String[] Args) throws IOException {
        /*Getting the file and going through each line*/
        File planeFile = new File("plane.txt");
        Scanner scanFile = new Scanner(planeFile);

        /*Array to store the flights in*/
        String[] flights = new String[50];

        while(scanFile.hasNext()) {
            for(int i = 0; i < flights.length; i++) {
                flights[i] = scanFile.nextLine();
            }
        Arrays.toString(flights);
        }

    }
}

这是我的代码的输出:

Exception in thread "main" java.util.NoSuchElementException: No line found
        at java.base/java.util.Scanner.nextLine(Scanner.java:1651)
        at Main.main(Main.java:20)

但我需要它将文本文件的每一行存储在一个数组中。这是文件:

ID, Destination, Day, Meal, Rows, NumPerRow
9010, Florida, 3, no, 22, 4
9002, Florida, 1, no, 22, 4
9005, Florida, 1, yes, 32, 5
9013, Florida, 3, yes, 32, 5
9008, Florida, 2, yes, 32, 5
9024, Florida, 6, yes, 32, 5
9016, Florida, 4, yes, 32, 5
9021, Florida, 5, yes, 32, 5
9018, Florida, 5, no, 22, 4
9029, Paris, 7, yes, 32, 5
9026, Bahamas, 7, no, 22, 4
9007, Boston, 2, no, 24, 4
9015, Boston, 4, no, 24, 4
9023, Boston, 6, no, 24, 4
9009, NYC, 2, yes, 32, 5
9012, NYC, 3, yes, 32, 5
9004, NYC, 1, yes, 32, 5
9025, NYC, 6, yes, 32, 5
9017, NYC, 4, yes, 32, 5
9020, NYC, 5, yes, 32, 5
9011, Chicago, 3, no, 24, 4
9019, Chicago, 5, no, 24, 4
9003, Chicago, 1, no, 24, 4
9014, DC, 4, no, 22, 4
9006, DC, 2, no, 22, 4
9022, DC, 6, no, 22, 4
9027, Jamaica, 7, no, 24, 4
9028, London, 7, yes, 32, 5

标签: javaarraysoop

解决方案


您的代码将循环获取数组的长度,该长度在此代码段中硬编码为:50 个插槽。

您的文件包含少于 50 个航班,因此会发生此错误。

我会就如何做这些事情提供建议,但是您的问题不遗余力地试图让我们印象深刻,这种将这些数据存储在字符串数组中的愚蠢模型是如何需要的,所以我想它是..需要的。

你说这是必需的,你的代码说有 50 个航班。想办法事先知道有多少航班,或者安排 50 个航班在文件中,或者扩展问题域来解释当文件包含少于 50 个航班时应该做什么(或者就此而言,什么如果有超过 50 个航班,应该会发生)。

注意:如果你的答案是:数组应该和我的文本文件中的飞行线一样大,那么你需要 ArrayList,而不是 String[]。请注意,如果您在其他地方需要,ArrayList 可以很简单地给您一个 String[]。如果这也不行,那么,Java 库是开源的。看看 ArrayList 是如何工作的,因为您将编写它的克隆。


推荐阅读