1

我设法能够检查输入并判断它是否为 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) 返回一个长整数。因此,为了将其转换为 int,您需要执行以下操作:

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

但是,我建议在这种情况下使用 long 而不是 int,因为该值可能不适合 int:

long value = Math.round(double);

另一方面, Math.round(float) 将返回一个 int。

于 2012-08-18T10:24:23.967 回答