我需要根据以下说明制作方法。提示是"你想要什么宽度?"。用户输入输入,如果它不是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) {
}
答案 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! ");
}
}