使用多个分隔符进行字符串分析
我可以使用多个分隔符来解析字符串吗?让我们一试吧。假设您获得一个呼叫记录,该记录包含由a分配的每个呼叫的开始时间和结束时间。开始时间和结束时间用|分隔。让我们检查一下Sample Input&输出并编写相同的代码。在String API中使用split函数
创建一个主类“Main.java”。 使用以下成员创建另一个类文件“PhoneCalls.java”, 数据类型变量名称 日期开始时间 日期结束时间
使用适当的getter和setter。
输入和输出格式: 有关格式规范,请参阅示例输入和输出。
[所有粗体文本对应输入,其余对应输出]
示例输入: 输入详细信息(开始时间1 |结束时间1,开始时间2 |结束时间2) 01:00:00 | 02:01:00,03:00:00 | 04:01:00
示例输出:
致电详情
拨打的电话次数:2
致电1:
开始时间:01:00:00
结束时间:02:01:00
致电2:
开始时间:03:00:
结束时间:04:01:00
程序:
package java1;
import java.io.*;
import java.lang.*;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@SuppressWarnings("unused")
class PhoneCalls
{
Date startTime;
Date endTime;
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
}
public class Main
{
@SuppressWarnings("resource")
public static void main(String args[]) throws ParseException
{
Scanner s=new Scanner(System.in);
System.out.println("Enter detail (start time1|end time1,start time2|end time2)");
String str=s.nextLine();
String[] str1=str.split(",");
int a=str1.length;
System.out.println("Call Details");
System.out.println("Number of calls made : "+a);
PhoneCalls[] p=new PhoneCalls[a];
DateFormat formatter = new SimpleDateFormat("hh:mm:ss");
for(int i=0;i<a;i++)
{
p[i]=new PhoneCalls();
String[] str2=null;
str2=str1[i].split("\\|");
Date date1=null;
date1=formatter.parse(str2[0]);
Date date2=null;
date2=formatter.parse(str2[1]);
p[i].setStartTime(date1);
p[i].setEndTime(date2);
}
for(int j=0;j<a;j++)
{
System.out.println("Call "+(j+1)+" :");
System.out.println("Start Time : "+p[j].startTime);
System.out.println("End Time : "+p[j].endTime);
}
}
}
My output:
Call Details
Number of calls made : 2
Call 1 :
Start Time : Thu Jan 01 01:00:00 IST 1970
End Time : Thu Jan 01 02:01:00 IST 1970
Call 2 :
Start Time : Thu Jan 01 03:00:00 IST 1970
End Time : Thu Jan 01 04:01:00 IST 1970
required output:
Call Details
Number of calls made : 2
Call 1 :
Start Time : 01:00:00
End Time : 02:01:00
Call 2 :
Start Time : 03:00:00
End Time : 04:01:00
答案 0 :(得分:1)
正如Jon Skeet所说,你需要使用SimpleDateFormatter。
您的代码应如下所示:
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
for(int j = 0; j < a; j++)
{
System.out.println("Call "+(j+1)+" :");
System.out.println("Start Time : " + sdf.format(p[j].startTime));
System.out.println("End Time : " + sdf.format(p[j].endTime));
}
此处SimpleDateFormatter
用于格式化Date
对象的输出值。
完整的代码:
package nl.testing.startingpoint;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
class PhoneCalls
{
Date startTime;
Date endTime;
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
}
public class Main
{
@SuppressWarnings("resource")
public static void main(String args[]) throws ParseException
{
Scanner s = new Scanner(System.in);
System.out.println("Enter detail (start time1|end time1,start time2|end time2)");
String str = s.nextLine();
String[] str1 = str.split(",");
int a = str1.length;
System.out.println("Call Details");
System.out.println("Number of calls made : "+a);
PhoneCalls[] p = new PhoneCalls[a];
DateFormat formatter = new SimpleDateFormat("hh:mm:ss");
for(int i = 0; i < a; i++) {
p[i] = new PhoneCalls();
String[] str2 = str1[i].split("\\|");
Date date1 = formatter.parse(str2[0]);
Date date2 = formatter.parse(str2[1]);
p[i].setStartTime(date1);
p[i].setEndTime(date2);
}
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
for(int j = 0; j < a; j++)
{
System.out.println("Call "+(j+1)+" :");
System.out.println("Start Time : " + sdf.format(p[j].startTime));
System.out.println("End Time : " + sdf.format(p[j].endTime));
}
}
}