1

入力をチェックして、それがintかどうかを確認し、そうでないかどうかをユーザーに再確認することができました。ただし、double を丸めて int に変換するチェックを追加したいと考えています。Math.round メソッドをいじってみましたが、何も正しく動作しませんでした。

public static int getInteger(String prompt)
{
    int input = 0;
    Scanner user_input = new Scanner( System.in );
    System.out.print("Enter a integer: ");

    while (!user_input.hasNextInt()) { 
        System.out.println("Is not a valid number.");
        user_input.next(); 
    }


    return input;
}

誰かが私に方法を教えてくれたら素晴らしいでしょう、乾杯。

4

2 に答える 2

1
public static int getInteger()
{
    int input = 0;
    Scanner user_input = new Scanner( System.in );
    System.out.print("Enter a integer: ");

    while (!user_input.hasNextInt() && !user_input.hasNextDouble()) {
        System.out.println("Is not a valid number.");

        user_input.next();
    }

    if(user_input.hasNextInt()) {
        input = user_input.nextInt();
    }
    else {
        input = Math.round((float) user_input.nextDouble()); //I assume here that your number is small as you said
    }

    return input;
}
于 2012-08-18T11:05:16.777 に答える
0

Math.round(double) は long を返します。したがって、それを int に変換するには、次のことを行う必要があります。

int value = (int) Math.round(double);

ただし、そのような場合は、値が int に収まらない可能性があるため、int の代わりに long を使用することをお勧めします。

long value = Math.round(double);

一方、Math.round(float) は int を返します。

于 2012-08-18T10:24:23.967 に答える