【问题标题】:Creating a method that asks for input within a range and returns that value创建一个要求在一个范围内输入并返回该值的方法
【发布时间】:2017-11-07 02:36:59
【问题描述】:

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

此方法提示用户输入一个数字,在返回数字之前验证它是否在 min 和 max(包括)之间。

如果输入的数字不在 min 和 max 之间,则会向用户显示一条错误消息,并为用户提供另一个输入数字的机会。如果 min 为 1 且 max 为 5,则错误消息为:“预期为 1 到 5 的数字。”

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

在此方法中不要使用常量,所有比较和消息只使用传入参数的 min 和 max。不要在此方法中创建 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) {
}

【问题讨论】:

  • 真诚地努力解决问题并发布您的代码,然后我们可以为您提供帮助。
  • 欢迎来到 Stack Overflow!您似乎在要求某人为您编写一些代码。 Stack Overflow 是一个问答网站,而不是代码编写服务。请see here学习如何写出有效的问题。

标签: java methods return


【解决方案1】:

我没试过,但应该是:

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);
        }
    }
}

【讨论】:

  • 如果输入不是 3 到 20 之间的整数,我如何确保弹出错误消息。例如,他们输入“香蕉”或“大家好”或“2”。
  • 我编辑了我的答案。对于任何无效输入,它将显示 Expected a number between min and max
【解决方案2】:

为简单起见,我使用 EasyReader 而不是扫描仪。但这里有一些您可能想要使用的概念(这看起来像是某种分配)。

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

在 pvsm 中,我做了两个输入来占用用户输入。 您可能还想考虑创建一个排序数组,这样用户就不需要找到最低的 val。

布尔值是 ...

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! ");
        }
    }

【讨论】:

猜你喜欢
  • 2018-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多