首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用扫描器和分隔符将文本文件读入数组列表

使用扫描器和分隔符将文本文件读入数组列表
EN

Stack Overflow用户
提问于 2018-12-28 15:15:57
回答 2查看 604关注 0票数 0

我有一些作业需要我从使用":“(冒号)作为分隔符的文本文件中读取。该文件的内容是有关动物的信息,包括名称、身高和大小等。文件中的文本包含浮点数、整数和字符串,但是,主要问题是当读取从下一行获取的信息时,这是因为每一行的最后字符串没有以":“结尾,而是以句号结尾。

文件:

代码语言:javascript
复制
Saltwater Crocodile:453:17:50:7:88:Crocodiles can slow their heartbeat down to two beats per minute.
Praying Mantis:0.02:0.22:41:5:39:They can turn their heads up to 180 degrees in search of insects.

我首先使用名为s.hasNext的扫描器将文本文件放入数组中。

当使用分隔符s.useDelimiter(“”)时;

程序会打印出来

人类直到大约100年前才知道它们的存在。咸水鳄鱼

而不仅仅是“它们的存在直到100年前才被人类所知”。当被召唤的时候。

我尝试为分隔符添加一个句号,比如这个scan.useDelimiter(":.");但是,当我这样做时,它会干扰同样具有“”的浮点数。

代码语言:javascript
复制
 try (
                    Scanner s = new Scanner(new File(dataPath))) {

 s.useDelimiter("[:]");     

                ArrayList<String> animalArr = new ArrayList();
                while (s.hasNext()) {
                    animalArr.add(s.next());
              }

 System.out.println(animalArr.get(7));

人类直到大约100年前才知道它们的存在。咸水鳄鱼

只是没有下一行信息是前一行字符串的一部分。我已经想了两天了,我需要所有我能得到的帮助。也许有一种方法可以忽略句号,对不起我的无能。

System.out.println(animalArr.get(7));

人类直到大约100年前才知道它们的存在。咸水鳄鱼

成为

“人类直到大约100年前才知道它们的存在”。从根本上说

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-28 15:29:43

您将分隔符设置为使用":“,这将告诉.next()方法查找":”为止的所有文本。在你的情况下,它是:

人类直到大约100年前才知道它们的存在。咸水鳄鱼

我会使用.hasNextLine().nextLine()来获取文件中的每一行(因为每一行都有一个硬停止)。然后使用myLine.split(":")获取行中的每个字段。

票数 0
EN

Stack Overflow用户

发布于 2018-12-28 16:14:19

此代码解决了您的问题:

代码语言:javascript
复制
try {
    ArrayList<String> animalArr = new ArrayList();
    Scanner s = new Scanner(new File(dataPath));
    s.useDelimiter("[:]");  
    while (s.hasNext()) {
        String txt = s.next();
        if(txt.contains(".") && !txt.matches("-?\\d+(\\.\\d+)?")) {
            String txt1 = txt.substring(0, txt.lastIndexOf(".") + 1);
            String txt2 = txt.substring(txt.lastIndexOf(".") + 1, txt.length());
            animalArr.add(txt1.trim());
            animalArr.add(txt2.trim());
        } else {
            animalArr.add(txt);
        }
    }   
    for(String a : animalArr) {
        System.out.println(a);
    }
} catch(Exception e) {
    e.printStackTrace();
}

活生生的例子(通过适配以显示没有文件的结果):

  • http://tpcg.io/2wmYQn
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53960604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档