冒号和空间daredevil

时间:2016-02-07 12:56:16

标签: java time

我几乎完成了我的程序然后突然出现了问题。如何在输出中输入空格或冒号而不会出现错误? 以下是我的输出结果的示例。

Factory

这是我的程序

    TIME DIFFERENCE

Enter first time (hh:mm aa): 12 00 pm
Enter second time (hh:mm aa): 12:00 am
Do you wish to continue (Y/N)?: 
n
The difference is 720 minutes and 0 seconds.

1 个答案:

答案 0 :(得分:1)

您可以使用replaceFirst(" ",":")在输入后用:替换第一个空格。

System.out.print("TIME DIFFERENCE" + "\n\n" 
              + "Enter first time (hh:mm aa): ");
String time1 = input.nextLine().replaceFirst(" ",":");
System.out.print("Enter second time (hh:mm aa): ");
String time2 = input.nextLine().replaceFirst(" ",":");

有了这个,样本交互将是:

  

第一次输入(hh:mm aa):12 56 pm
  输入第二次(hh:mm aa):14 00 pm
  你想继续(是/否)?:n
  差异是784分0秒。

正如您所说,您可能需要同时使用这两种格式,然后您可以修改代码的这一部分:

DateFormat sdf = new SimpleDateFormat("hh:mm aa");
Date d1 = sdf.parse(time1);
Date d2 = sdf.parse(time2);

如下:

DateFormat sp_sdf = new SimpleDateFormat("hh mm aa");
DateFormat co_sdf = new SimpleDateFormat("hh:mm aa");
Date d1, d2;
try{
    d1 = sp_sdf.parse(time1);
}catch(java.text.ParseException e){
    d1 = co_sdf.parse(time1);   
}

try{
    d2 = sp_sdf.parse(time2);
}catch(java.text.ParseException e){
    d2 = co_sdf.parse(time2);   
}