创建一个方法,要求输入范围内的输入并返回该值

时间:2017-11-07 02:36:59

标签: java methods return

我需要根据以下说明制作方法。提示是"你想要什么宽度?"。用户输入输入,如果它不是3到20之间的整数,则错误消息"预期3到20之间的数字"弹出。用户应该继续输入输入,直到给出有效的答案,然后该值应该返回到main。

此方法提示用户输入一个数字,在返回数字之前验证它是否在最小值和最大值之间。

如果输入的数字不在最小值和最大值之间,则会向用户显示错误消息并给出另一个输入数字的机会。如果min为1且max为5,则错误消息为:"预期从1到5的数字。"

如果用户输入字符,单词或除有效int之外的任何内容,则会向用户显示相同的消息。使用Scanner的方法(hasNextInt)检测输入有效int以外的字符,并且不使用异常处理。

不要在此方法中使用常量,只使用传入的最小值和最大值来进行所有比较和消息。不要在此方法中创建Scanner实例,将对main的Scanner的引用传递给此方法。整个提示应该传入并打印出来。

/**
 *@param in  The reference to the instance of Scanner created in main.
 *@param prompt  The text prompt that is shown once to the user.
 *@param min  The minimum value that the user must enter.
 *@param max  The maximum value that the user must enter.
 *@return The integer that the user entered that is between min and max, inclusive.
 */
public static int promptUser(Scanner in, String prompt, int min, int max) {
}

2 个答案:

答案 0 :(得分:0)

我没试过,但它应该是:

public static int promptUser(Scanner in, String prompt, int min, int max)
{
    System.out.println(prompt);
    while (true)
    {
        try
        {
            String val = in.next();
            int value = Integer.parseInt(val);
            if (min > value || max < value)
                throw new Exception();
            else
            return value;
        }
        catch (Exception e)
        {
            System.out.println("Expected a number between " + min + " and " + max);
        }
    }
}

答案 1 :(得分:-1)

为简单起见,我使用EasyReader而非扫描仪。但是这里有一些你可能想要使用的概念(这看起来像某种类型的赋值)。

首先我制作了一个可以读取整数的EasyReader。

在pvsm中,我做了两个输入来接收用户输入。 您可能还需要考虑制作排序数组,以便用户无需找到最低的值。

布尔值是......

public static int promptUser(EasyReader in, int min, int max){
    while(true){
        //idk what prompt is but ere u go.
        System.out.print("Enter a num between "+min+" and "+max+" ");
        in = new EasyReader();
        int take = in.readInt();
        if(take == min || take == max){
            System.out.print(take);
            return take;
        }
        else if(take >= min && take <= max){
            System.out.print(take);
            return take;
        }
        else{
            System.out.print("Error ... bannanas! ");
        }
    }