如何从Java中用逗号和标题分隔的文件中读取时间?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (99)

我在文件中有一堆列表。我的目标是将所有时间都放在他们自己的字符串数组中time1time2并且time3。该文件如下所示:

time1, 5:01,3:21,4:05,1:52 time2, 2:11,6:35,2:00,5:00 time3, 12:09, 
11:35, 9:02

我试过拆分我读过的每一行然后把它变成标记,用逗号分隔。但是,这似乎不是一个有效的解决方案,因为第一个元素总是以空格开头,而最后一个元素没有逗号。我想知道是否有人知道这个问题的解决方法。

这是我到目前为止提出的代码:

public void read_file(){
try{
    times = new Scanner(new File("times.csv"));
    read_file();
}
catch(Exception e){
    System.out.printf("Could not find file\n");
}                
}
public void read_file(){

while(times.hasNextLine()){
    i++;
    String a = times.nextLine();
    String time[] = a.split(",");
    //would only add first 4 elements
    if(i < 4){
        timeList1.add(time[i])
    }
}
}

这里的问题是我不知道如何检查我必须继续运行多少元素,因为列表中的次数是不可预测的。唯一保持不变的是,总会有3个时间列表被调用time1time2time3

提问于
用户回答回答于

以下是另一种更简单的方法:

public class ReadTimes {
    private Map<String, List<String>> timeLists = new HashMap();
    public void read_file() {
        try {
            Scanner times = new Scanner(new File("times.csv"));
            read_file(times);
        } catch (Exception e) {
            System.out.printf("Could not find file\n");
        }
    }
    public void read_file(Scanner times) {
        String label=null;
        while (times.hasNextLine()) {
            String time[] = times.nextLine().trim().split("[, ]+");
            for (String timeString : time) {
                if (timeString.startsWith("time")) {
                    label = timeString;
                    timeLists.put(label, new ArrayList());
                } else if (label != null) {
                    timeLists.get(label).add(timeString);
                }
            }
        }
        // dump the map of arraylists for demonstration purposes...
        for (Entry<String,List<String>> timeEntry : timeLists.entrySet()) {
            System.out.println(timeEntry);
        }
    }

    public static void main(String[] args) {
        ReadTimes rt = new ReadTimes();
        rt.read_file();
    }
}

鉴于问题中显示的输入数据,将产生以下输出:

time1=[5:01, 3:21, 4:05, 1:52]
time2=[2:11, 6:35, 2:00, 5:00]
time3=[12:09, 11:35, 9:02]

热门问答

使用文档遇到问题,可以找谁处理?

请叫我雷锋!腾讯云文档有“文档反馈”的功能,直接在文档页面就可以反馈,反馈还有 礼品 ~ 云+社区:问答.png ... 展开详请

直播间IM消息可以下载到自己服务器备份吗?

人生的旅途辣鸡前端
推荐
目前仅私有群(Private)、公开群(Public)和聊天室(ChatRoom)具备消息漫游能力(默认7天)。核实下您那边的群组类型看是否支持https://cloud.tencent.com/document/product/269/1502#.E6.B6.88.E6.81....... 展开详请

腾讯云容器加速地址是错的?

推荐已采纳

我刚才测试了一下,这个加速器地址可以用额,你这边是怎么测试出是关闭状态的啊?

加速器地址是不能直接用浏览器访问的,阿里云提供的直接访问也是空

webIM添加组员报错?

无聊至极互联网重度用户
推荐已采纳

付费超过组数限制,核实下是否超过限制

https://cloud.tencent.com/document/product/269/11673#.E5.8A.9F.E8.83.BD.E5.AF.B9.E6.AF.94

Tencent iot-sdk-embedded-c在Windows下编译出错:无法解析外部符号?

无聊至极互联网重度用户
推荐已采纳

腾讯云IM调用 add_group_member提示该群不能邀请成员?

推荐已采纳
是什么类型的群?根据相应类型的邀请他人入群的控制项,对照文档看下是否允许邀请他人入群。 参考文档:https://cloud.tencent.com/document/product/269/1502#.E7.BE.A4.E6.88.90.E5.91.98.E6.93.8D.E4...... 展开详请

所属标签

扫码关注云+社区

领取腾讯云代金券