TimeSorter:使用扫描仪读取时间(形式为hh:mm a.m.)文件

时间:2013-12-07 19:32:04

标签: java time colon

这是我做了多远。

try
   {
      Scanner keyb = new Scanner(System.in);
      System.out.print("Enter the name of the input file-> ");
      String inFileName = keyb.next();
      System.out.print("Enter the name of the output file-> ");
      String outFileName = keyb.next();            
      ArrayList<Time> roster = new ArrayList<Time>();
      Scanner fileIn = new Scanner(new File(inFileName)); 
      while (fileIn.hasNext())
      {
         int hours = fileIn.nextInt();
         int minutes = fileIn.nextInt();
         String meridian = fileIn.next();
         roster.add(new Time(hours,minutes,meridian));
      }
      fileIn.close();

基本上,我要做的是读取'appointment.txt'文件,该文件具有11:30 am.m.形式的所有不同时间,以便按顺序对其进行排序并保存不同的文件名。但由于小时和分钟之间的冒号(:),我的while循环无法正确读取时间并产生错误。什么会使我的while循环工作?

1 个答案:

答案 0 :(得分:0)

您的while - 循环无效,因为您检查了fileIn.hasNext(),但之后以不同的方式使用了fileIn.nextInt()fileIn.next()

您可能想要使用的是:

while (fileIn.hasNextLine()) {
    String line = fileIn.nextLine();
    String[] bigParts = line.split(" ");
    String[] timeParts = bigParts[0].split(":");
    roster.add(new Time(
        Integer.parseInt(timeParts[0]), 
        Integer.parseInt(timeParts[1]), 
        bigParts[1]
    ));
}

这会逐行读取文件,然后读取它已读取的行。接下来将文本分成三部分,首先是(空白),然后是:(冒号)。

更新:已添加Integer.parseInt(),因为它最初也已完成。