此程序用于转换ISO日期(例如:2014-02-15)并能够将其转换为“2014年2月15日”,但我遇到构造函数问题,这是我到目前为止所做的:
public SimpleDate(String isoDate)
{
// test print
System.out.println(isoDate);
Scanner sc = new Scanner(isoDate);
sc.useDelimiter("-");
this.year = sc.nextInt();
this.month = sc.nextInt();
this.day = sc.nextInt();
System.out.println(year);
}//constructor
我在main中进行了测试:
public static void main(String[] args)
{
SimpleDate date = new SimpleDate("2014-12-12");
}//main
当运行代码时,我在构造函数中获取测试打印以执行但我很快就会收到此错误:
Test Print: 2014-12-12
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at SimpleDate.<init>(SimpleDate.java:19)
at SimpleDate.main(SimpleDate.java:68)
答案 0 :(得分:1)
我建议使用“标准”日期类来执行这种简单的转换。此代码可以帮助您这样做:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDate {
private Date date ;
public SimpleDate(String isoDate) throws ParseException
{
date = new SimpleDateFormat("yyyy-MM-dd").parse(isoDate);
}
private String convert() {
return new SimpleDateFormat("MMMMM d yyyy").format(date);
}
public static void main(String[] args) throws ParseException
{
System.out.println( new SimpleDate("2014-02-15").convert());
}//main
}
答案 1 :(得分:0)
由于您的分隔符为""
,扫描程序会扫描您的输入并返回2014-12-12
- 您显然希望将字符串拆分为-
。
答案 2 :(得分:0)
替换
sc.useDelimiter("-");
与
sc.useDelimiter("\n|-");
因为Scanner
要求您在结尾按Enter键。