java - 将文本文件写入数组列表-ArrayIndexOutOfBoundsException错误

标签 java java-8

文本文件:

Europe, France, Paris

Asia, China, Beijing
Africa, Congo


我正在尝试将此txt文件写入数组列表。我在第四行出现错误。

public class Address {
private String continent;
private String country;
private String city;

public Adresa(String continent, String country, String city) {
    this.continent = continent;
    this.country = country;
    this.city = city;
}




private static List<Address> readAddressFromFile(String fileName) {
    List<Address> addresses = new ArrayList<>();
    Path pathToFile = Paths.get(fileName);

    try (BufferedReader br = Files.newBufferedReader(pathToFile, StandardCharsets.UTF_8)) {
        String line = br.readLine();
        while (line.length() > 0) {
                String[] attributes = line.split(", ");
                Address address = createAddress(attributes);
                addresses.add(address);
                line = br.readLine();
        }

    } catch (IOException ioe) {
        ioe.printStackTrace();
    }

    return addresses;
}

private static Adresa createAddress(String[] metadata) {
    String continent = metadata[0];
    String country = metadata[1];
    String city = metadata[2];
    return new Address(continent, country, city);
}


我懂了


“ ArrayIndexOutOfBoundsException:2”


错误,因为我在第四行只有2个元素。我该如何解决?

最佳答案

我建议您在第三个元素上添加一个if

private static Adresa createAddress(String[] metadata) {
    String continent = metadata[0];
    String country = metadata[1];
    String city = "";
    if(metadata.length>2){
        city = metadata[2];
    }
    return new Address(continent, country, city);
}

关于java - 将文本文件写入数组列表-ArrayIndexOutOfBoundsException错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57177172/

相关文章:

java - 循环多个不同类型的列表并使用 java 8 lambda 表达式创建另一个列表

java - 在 Java 中使用不可变类的 Scala 扩展

java - 运行我生成的 .jar 会产生 "Can' t 在 AMD 64 位平台上加载此 .dll(机器代码=0xbd)”

java - 什么是嵌入到 Java 游戏引擎中的良好、简单的脚本语言?

java - 检查数组中的特定整数

java - 为什么 java.lang.Iterable.forEach() 会调用 requireNonNull()?

java-8 - 使用 Java 8 流 API 将 List<Map<String, Object>> 转换为 Map<String, List<Map<String, Object>>>

java - 对多个函数执行相同的操作

java - JRE如何才能让Tomcat处理JSP文件呢?为什么不是JDK?

java-8 - Java 8 Stream API 中收集器的默认设置/列表实现是什么?