0

クライアントの到着日を文字列で取得し、それをパラメータとして strToCal メソッドに渡したいのですが、このメソッドはその日付の Calendar オブジェクトを返しますが、動作しません。id get parse exception エラー:

static String pattern = "yyyy-MM-dd HH:mm:ss";
System.out.println("enter arrival date ("+ pattern +"):\n" );
c.setArrDate(strToCal(sc.next(),c));
System.out.println("enter departure date ("+ pattern +"):\n");
c.setResTilDate(strToCal(sc.next(),c));

static Calendar strToCal(String s, Client c) throws ParseException {
    try{
        DateFormat df = new SimpleDateFormat(pattern);
        Calendar cal  = Calendar.getInstance();
        cal.setTime(df.parse(s));
        return cal;
    } catch(ParseException e){
        System.out.println("somethings wrong");
        return null;
    }
4

1 に答える 1

2

sc.next()と置き換えますsc.nextLine();

sc.next()最初のスペースで分割され、入力文字列が正しいパターンにならないためです。

編集私はこのコードを試しました:

public class Test4 {
    static String pattern = "yyyy-MM-dd HH:mm:ss";

    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        final Scanner input = new Scanner(System.in);
        System.out.println("input date: ");
        String a = input.nextLine();
        c = strToCal(a);
        System.out.println(c.getTime());
    }


    static Calendar strToCal(String s) {
        try {
            DateFormat df = new SimpleDateFormat(pattern);
            Calendar cal = Calendar.getInstance();
            cal.setTime(df.parse(s));
            return cal;
        } catch (ParseException e) {
            e.printStackTrace();
            return null;
        }
    }
}

next():

input date:
2014-05-16 13:30:00
java.text.ParseException: Unparseable date: "2014-05-16"
        at java.text.DateFormat.parse(Unknown Source)

nextLine():

input date:
2014-05-16 13:30:00
Fri May 16 13:30:00 EEST 2014
于 2014-12-08T09:33:35.827 に答える