我想将扫描仪的整数输入限制在一个范围内

时间:2018-12-23 15:04:52

标签: java

我知道这听起来像是一个重复的问题,但是昨天我确实花了一整天时间在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]之类的问题。我感觉到这一点,如果没有一点指导,我将无法解决。

5 个答案:

答案 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;
        }
    }