2

ユーザーが分を入力し、プログラムが現在の日付と時刻+ユーザーが入力した分を表示する小さなプログラムを作成しました。

final String DATE_FORMAT_NOW = "MM/dd/yyyy HH:mm:ss";
final DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss", Locale.US);

Calendar cal = Calendar.getInstance();
cal.add(Calendar.MINUTE, Integer.valueOf(sample.getMinutes()));

SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
String dt = sdf.format(cal.getTime());

System.out.println(" Date and time with added Minutes : " + (dateFormat.parse(dt));

サンプル

private String minutes;

//getter and setter

この例外が発生します

java.lang.NumberFormatException:入力文字列の場合: ""

私がここで間違っていることは何ですか?使用する必要があります

Integer.parseInt

また

Integer.valueOf(Integer.parseInt(sample.getMinutes())));?
4

9 に答える 9

1

から返された文字列sample.getMinutes()が数値かどうかを確認します。解析するには、空白を含まない数値でなければなりませんNumberFormatException

于 2012-03-11T15:14:46.207 に答える
1
  1. 現在の日付と時刻。

    public static void main(String[] args) 
    {
        try 
        {
            final String DATE_FORMAT_NOW = "MM/dd/yyyy HH:mm:ss";
            final DateFormat dateFormat  = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss", Locale.US);
    
            Date sample  = new Date();
            int iMinutes = 30;//minutes added by the user
    
            Calendar cal = Calendar.getInstance();
    
            cal.add(Calendar.MINUTE, Integer.valueOf(sample.getMinutes()));
    
            SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
            String dt            = sdf.format(cal.getTime());
    
            System.out.println("Current Date and time:"+sample);
            System.out.println("Date and time with added Minutes : " + (dateFormat.parse(dt)));
        } 
        catch (ParseException ex) 
        {
            Logger.getLogger(NewMain.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    

    出力は次のように表示さ れ ます
    。時間が「30」分進みました。それが結果です(日付と時刻に分が追加されています)。



  2. ユーザーとの入力分。

    public static void main(String[] args) 
    {
        try 
        {
            final String DATE_FORMAT_NOW = "MM/dd/yyyy HH:mm:ss";
            final DateFormat dateFormat  = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss", Locale.US);
    
            int iMinutes = 30;//minutes added by the user
    
            Calendar cal = Calendar.getInstance();
    
            cal.add(Calendar.MINUTE, iMinutes);
    
            SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
            String dt            = sdf.format(cal.getTime());
    
            System.out.println("Current Date and time:"+sample);
            System.out.println("Date and time with added Minutes : " + (dateFormat.parse(dt)));
        } 
        catch (ParseException ex) 
        {
            Logger.getLogger(NewMain.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    

    これは、最初にユーザーから分を取得し、その分をコードの「iMinutes」変数に割り当てて、カレンダーにその分を追加します。

    出力は次のように表示され ます
    :

また、分を設定する場合は、「cal.add」で「add」の代わりに「set」を使用します。

これで問題が解決することを願っています。
よろしく。

于 2012-06-12T10:43:03.433 に答える
0

あなたが抱えている問題は、空の文字列が有効な整数ではないということです。アプリケーションは例外をキャッチし、代わりに適切なデフォルトを設定する必要があります。

于 2012-02-09T11:51:46.003 に答える
0

""は空の文字列であり、どのような状況でも有効な整数に解析できません

于 2012-02-09T11:52:03.600 に答える
0

java.lang.NumberFormatException:入力文字列の場合: ""

空の文字列を数値に解析することはできません。

最初にそれをチェックし(String#length()やStringUtils#isBlank()などを使用して)、このケースをどう処理するかを決定する必要があります(たとえば、ゼロとして扱います)。

于 2012-02-09T11:52:07.233 に答える
0

java.lang.NumberFormatException:入力文字列の場合: ""

分を設定したことがないようです文字列

于 2012-02-09T11:52:21.153 に答える
0

ここには珍しいことは何もありません。parseInt()およびvalueOfのJavaドキュメントを読んでください。これは、が含まれていないNumberFormatException場合にaがスローされることを明確に示しています。そして、anは解析可能なintではありません。Stringparsable integerempty string ""

NumberFormatExceptionaがスローされるようなケースをどのように処理するかはあなた次第です。

于 2012-02-09T12:12:08.777 に答える
0

ある種のチェックを追加します。

final String DATE_FORMAT_NOW = "MM/dd/yyyy HH:mm:ss";
final DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss", Locale.US);

Calendar cal = Calendar.getInstance();
final String minutes = sample.getMinutes()
cal.add(Calendar.MINUTE, Integer.valueOf((minutes != null && !minutes.isEmpty()) ? minutes : 0);

SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
String dt = sdf.format(cal.getTime());

System.out.println(" Date and time with added Minutes : " + (dateFormat.parse(dt));
于 2012-02-09T12:02:21.530 に答える
0

java.lang.NumberFormatException: 入力文字列の場合: ""

入力文字列 "" を有効な整数に変換できません。

Integer.parseInt を使用する前に、次の方法で整数を取得していることを確認してください。

1. int をチェックするための JavaScript 検証を提供する

または

2.非整数文字列をチェックするためのサーバー側の検証を提供する

NumberFormatException を回避する方法も参照してください。

于 2012-02-09T11:58:50.380 に答える