2

宿題を少し手伝ってくれる人を探しています。ユーザーに数値文字列を入力してから、それを整数に変換してもらいたい。しかし、ユーザーが「100」の代わりに「100」などの間違った値を入力したかどうかを検出するループを作成したいと考えています。

私が考えていたのは、次のようなことをすることでした:

    do{
        numStr = JOptionPane.showInputDialog("Please enter a year in numarical form:"
                        + "\n(Ex. 1995):");
        num = Integer.parseInt(numStr);
            if(num!=Integer){
            tryagainstr=JOptionPane.showInputDialog("Entered value is not acceptable."
                                  + "\nPress 1 to try again or Press 2 to exit.");
    tryagain=Integer.parseInt(tryagainstr);
            }
            else{
            *Rest of the code...*
            }
            }while (tryagain==1);

しかし、その「整数」値を定義する方法がわかりません。ユーザーが間違ったものを入力した場合にクラッシュするのを防ぐために、それが数字であるかどうかを本質的に確認したいのです。

4

4 に答える 4

5

これを試して:

    try{
        Integer.valueOf(str);
    } catch (NumberFormatException e) {
        //not an integer
    }
于 2013-02-19T16:11:19.297 に答える
4

使用してみてくださいinstanceof。この方法は、多くのタイプ間のチェックに役立ちます

if (s instanceof String ){
// s is String
}else if(s instanceof Integer){
// s is Integer value
}

整数と文字列をチェックするだけの場合は、@NKukhar コードを使用できます

try{
        Integer.valueOf(str);
    } catch (NumberFormatException e) {
        //not an integer
    }
于 2015-02-23T09:59:39.647 に答える
2

これを試して

int num;
String s = JOptionPane.showInputDialog("Enter a number please");
while(true)
{
    if(s==null) 
        break; // if you press cancel it will exit
    try {
        num=Integer.parseInt(s);
        break;
    } catch(NumberFormatException ex)
    {
        s = JOptionPane.showInputDialog("Not a number , Try Again");
    }
}
于 2013-02-19T21:05:37.977 に答える
1

正規表現を使用して文字列の形式を検証し、数値のみを受け入れます。

Pattern.matches("/^\d+$/", numStr)

有効な数値シーケンスが含まれている場合、matchesメソッドは戻りますが、もちろん、入力はの容量をはるかに超える可能性があります。その場合は、またはタイプへの切り替えを検討できます。truenumStringIntegerlongBigInteger

于 2013-02-19T16:23:23.630 に答える