我知道这听起来像是一个重复的问题,但是昨天我确实花了一整天时间在Stack和Google上进行了广泛的搜索,尽管那里有不同的解决方案(其中一个是我自己尝试的)我已经达到了需要对代码进行一些指导的地步。
我只想创建一个仅接受值1到50的扫描仪。在我的主要方法中,我有以下内容:
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int inputInt = getInput(in);
System.out.print(inputInt);
}
public static int getInput(Scanner in) {
System.out.println("Enter the number of questions (between 1-50):");
int input = 0;
while (true) {
input = in.nextInt();
if(input > 50 || input < 1)
break;
System.out.print("Invalid input.\nEnter the number of questions (between 1-50):");
}
return input;
}
}
每当输入大于50或小于1时,似乎都不会出现“无效输入”错误。我一直在尝试搜索过去2天的解决方案,而我发现的每个解决方案都自身的问题,而试图解决每个问题只会把我挖得越来越深。诸如[1] [2] [3] [4] [5] [6]之类的问题。我感觉到这一点,如果没有一点指导,我将无法解决。
答案 0 :(得分:5)
您的界限错误!显然,您的意思是:
if(input >= 1 && input <= 50)
break;
这是因为输入在1到50之间时才有效。在这种情况下,您会爆发。
答案 1 :(得分:3)
此行:
System.out.print("Invalid input.\nEnter the number of questions (between 1-50):");
不会显示,因为您之前已经休息。在这种情况下,如果输入错误,则在显示行之前会中断。
答案 2 :(得分:3)
import java.util.Scanner;
public class test {
public static void main(String[] args) {
// taking the input
Scanner in = new Scanner(System.in);
System.out.println("Enter The number");
int score = in.nextInt();
//checking the input if it lies between 1 to 50
while(score<1||score>50){
System.out.println("You Entered the wrong number ,
Enter The number Again :");
score = in.nextInt();
}
}
在进行输入时,请在此之后立即检查是否在所需范围内,如果不在所需范围内,则再次输入输入内容!
答案 3 :(得分:2)
似乎您的逻辑倒退,请尝试以下操作:
public static int getInput(Scanner in) {
System.out.println("Enter the number of questions (between 1-50):");
int input = 0;
while (true) {
input = in.nextInt();
if(input <= 50 && input >= 1) // Break if you got the RIGHT number.
break;
System.out.print("Invalid input.\nEnter the number of questions (between 1-50):");
}
return input;
}
答案 4 :(得分:2)
System.out.print("Invalid input.\nEnter the number of questions (between 1-50):");
应该位于以下if条件中
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int inputInt = getInput(in);
System.out.print(inputInt);
}
public static int getInput(Scanner in) {
System.out.println("Enter the number of questions (between 1-50):");
int input = 0;
while (true) {
input = in.nextInt();
if(input > 50 || input < 1){
System.out.print("Invalid input.\nEnter the number of questions (between 1-50):");
break;
}
}
return input;
}
}