当前位置: 首页 > 知识库问答 >
问题:

创建一个方法,在某个范围内请求输入并返回该值

干高歌
2023-03-14

我需要根据下面的说明制定一个方法。提示是“您想要多宽?”。用户输入输入,如果不是3到20之间的整数,则会弹出错误消息“预期为3到20之间的数字”。用户应该继续输入,直到给出有效答案,然后该值应该返回到main。

此方法提示用户输入一个数字,在返回该数字之前,验证该数字介于最小和最大之间。

如果输入的数字不在最小值和最大值之间,则会向用户显示一条错误消息,并给用户另一个输入数字的机会。如果最小值为1,最大值为5,则错误消息为:“应为1到5之间的数字。”

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

此方法中不要使用常量,所有比较和消息只使用传入的最小和最大参数。不要在此方法中创建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个答案

郎恺
2023-03-14

为了简单起见,我使用EasyReader而不是scanner。但这里有一些你可能想使用的概念(这看起来像是某种赋值)。

首先,我只是做了一个简单的阅读工具,可以阅读ints。

在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! ");
        }
    }
壤驷旭
2023-03-14

我没有试过,但应该是:

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);
        }
    }
}
 类似资料:
  • 我想为一些地图实现编写一个基准测试,包括一个自定义实现。我想测试它在广泛的输入范围内的平均行为。 因为这是我第一次使用JMH,所以使用@Param看起来是显而易见的选择。但事实证明,JMH不会在一个基准测试中使用所有这些不同的输入,而是会为每一组参数运行单独的基准测试。 是否有一些我缺少的功能,或者只是在我的基准测试中循环输入的范围,这是正确的做法? 更新: 我实现了2个不同的基准,给出了完全相反

  • 尝试从云服务Web角色中运行的Azure存储帐户读取 我找到的所有关于这个主题的文章都表明,问题在于存储连接字符串或blob容器名称中的大写字母。 以下是代码: 异常被抛出blobContainer。设置权限。 当使用相同的代码和相同的凭证从计算仿真器(而不是从实时Web角色)访问相同的容器时,一切正常。我从Neudesic的Azure存储资源管理器中读取blob容器没有问题。 可能相关:我的本地

  • 以下代码根据变量所处的范围,为变量指定特定值。 这工作得很好,但是我想知道是否有一种更Pythonic的方法来编写下面的条件块。

  • 我正在尝试编写一个素数筛生成器,我将其转换为打印列表,然后在给定范围内打印素数。我很确定我的配对数是正确的,但出于某种原因,我在素数列表中得到了一些非素数的额外值。(我马上发现了这一点,因为我在输出中的最后一个值是3599,这不是素数)。我不确定我是否有某种逻辑错误,所以任何帮助都很棒。

  • 我正在阅读格式的JSON: 我将“student”存储到一个字符串中,并将每个学生的详细信息——“roll,name,subjects”存储到POJO中。 > ObjectMapper mapper=new ObjectMapper(); Map 返回某个学生的所有主修和辅修课程的最佳方式是什么?我应该做一个hashmap还是列表?或者还有别的办法吗?