java - SimpleDate 类的线程 "main"java.util.InputMismatchException 中出现异常

标签 java

该程序用于转换 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)

最佳答案

我建议使用“标准”日期类来执行这个简单的转换。此代码应该可以帮助您做到这一点:

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

}

关于java - SimpleDate 类的线程 "main"java.util.InputMismatchException 中出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21816364/

相关文章:

java - 从 java 代码调用 Snarl

java - 哪些最重要的功能我会错过针对 Android API 3 (OS 1.5) 而不是最新的 API?

java - 使用 JPA 创建唯一并合并数据库中的现有行

java - 为什么我需要在此处的 Managed Bean 中显式创建 ArrayList 的实例?

java - tomcat + spring mvc : trimSpaces

Java DES 加密、C# DES 解密

java - java中的作业和重载

java - OSGI组件初始化顺序可选贪婪

java - 接口(interface)和抽象类广告方法覆盖

java - 无法启动 Grizzly http 服务器