java - 查找每一行的整数和字符串并将它们放入数组中?

标签 java arrays buffered

所以我有这个 dat 文件(txt 文件),其中每个国家有一个州和一个邮政编码。 在这个 dat 文件中,我有一个分号来分隔每行的字符串和每行的整数。我还为此使用了一个接口(interface)和一个主类,但这是应该完成大部分工作的类。下面是方法。

PS:我试图在这个网站上找到其他已经回答了我的问题的问题,但没有一个真正有帮助!

这是 dat 文件的内容:

75242;乌普萨拉

90325;于默奥

96133;博登

23642;霍尔维肯

35243;韦克舍

51000;延雪平

72211;韦斯特罗斯

我的问题是,我找不到一种方法来按照我希望的方式保留数组中的整数或字符串。尝试只读取整数和字符串,但这不起作用。 另请注意,我尝试读取 dat 文件中的每一行,然后读取每个字符,以尝试将值放入自己的数组中。 还尝试通过使用 if'ments 并说“if(Character.is..)”来改变它们。 在下面的方法中,我只是 try catch 整数。

还认为由于分号,我应该使用类似“Character.is....”的内容来检查,然后从读取 ch/string 到 int。但当时要迈出一步,否则我将一事无成!

public void read() {

    try {
        ArrayList<Integer> itemArr = new ArrayList<Integer>();
        ArrayList<String> descArr = new ArrayList<String>();
        FileReader file = new FileReader("C:\\Users\\me\\Desktop\\places.dat");
        BufferedReader r = new BufferedReader(file);
        int r1;

        while ((r.readLine()) != null) {
            while ((r1 = r.read()) != -1) {
                char ch = (char) r1;
                if (Character.isDigit(ch)) {
                    itemArr.add(r.read());
                }
            }
        }

    } catch (IOException e) {

    }
}

这是预期的: 它们也已排序,但只要我能弄清楚如何将它们正确存储在每个数组中,我就可以处理这个问题。

23642 霍尔维肯

35243韦克舍

51000 延雪平

72211 韦斯特罗斯

75242 乌普萨拉

90325 于默奥

96133博登

感谢您的所有评论,确实有帮助。

最佳答案

您可以将逻辑更改为以下内容:

String currLine;
while ((currLine = r.readLine()) != null) {
    if (currLine.trim().length() > 0) {
        String[] split = currLine.split(";");
        itemArr.add(Integer.parseInt(split[0]));
        descArr.add(split[1]);
    }
}

这里我们根据;分割每一行(currLine)并将其存储到数组split中。现在,第 0 个索引将包含数字,第 1 个索引将包含字符串。

要将其添加到 itemArr 中,您需要将其解析为 int。另请注意,如果该行为空,则会跳过该行。现在对其进行排序也非常简单。

关于java - 查找每一行的整数和字符串并将它们放入数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54239848/

相关文章:

java - 在 Java 中处理文件指针的有效方法? (使用带文件指针的 BufferedReader)

java - 优化 Java 中的 for 循环有用吗?

javascript - array.map() - currentValue 和 index 参数切换了吗?

java - 是否有扩展/重写私有(private)类/方法的替代方案?

JavaScript .push 不工作

javascript - 添加可能无法检测到一月的年份

java - 使用 log4j2 实现缓冲 IO 的方法

go - 在 golang 中创建一段缓冲 channel

java - 如何在 boolean 方法中返回错误?

Java 连接到 Cassandra NoHostAvailableException