检查参数时舍入

时间:2012-08-18 10:19:58

标签: java rounding

我已经设法能够检查输入并判断它是否为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;
}

如果有人能告诉我怎么样,那会很棒,欢呼。

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

Math.round(double)返回一个long。因此,为了将其转换为您需要执行的int:

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

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

long value = Math.round(double);

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