java - 如何在数组中存储一行?
问题描述
我一直在尝试将 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
解决方案
您的代码将循环获取数组的长度,该长度在此代码段中硬编码为:50 个插槽。
您的文件包含少于 50 个航班,因此会发生此错误。
我会就如何做这些事情提供建议,但是您的问题不遗余力地试图让我们印象深刻,这种将这些数据存储在字符串数组中的愚蠢模型是如何需要的,所以我想它是..需要的。
你说这是必需的,你的代码说有 50 个航班。想办法事先知道有多少航班,或者安排 50 个航班在文件中,或者扩展问题域来解释当文件包含少于 50 个航班时应该做什么(或者就此而言,什么如果有超过 50 个航班,应该会发生)。
注意:如果你的答案是:数组应该和我的文本文件中的飞行线一样大,那么你需要 ArrayList,而不是 String[]。请注意,如果您在其他地方需要,ArrayList 可以很简单地给您一个 String[]。如果这也不行,那么,Java 库是开源的。看看 ArrayList 是如何工作的,因为您将编写它的克隆。
推荐阅读
- vue.js - 为什么在Vuetify分页组件中单击分页链接会给出“未找到匹配记录”消息
- c++ - 修复未初始化的局部变量错误
- objective-c - 使用调度队列实现作业调度程序
- c# - 将字符串拆分为对象
- symfony - Symfony3:在服务中注入几个@doctrine.orm.entity_manager
- jax-rs - 如何使用 Bean Validation 和 jax-rs 验证标头参数
- javascript - 数组中的 Javascript 数组 - 第一个索引总是被覆盖
- c++ - C++ 的 MySQL 框架
- java - 设置 Spring Boot Servelet Initializer 时遇到问题
- ruby-on-rails - 如何使用带有 Active Record 查询接口的 Link 表