过滤java.util.Scanner输入?

过滤java.util.Scanner输入?,java,java.util.scanner,Java,Java.util.scanner,我使用的是java.util.Scanner,如果用户输入超出范围,我想过滤掉它,例如只接受0、1、2或3。也许是这样的: if !(sc.hasNextInt 0,1,2,3 我知道这不是有效的语法,但我想展示一下我的意图。我如何告诉Java不要存储不符合我标准的用户输入?这是您必须自己实现的东西--它不是扫描仪所支持的东西。一种典型的方法是有这样的循环: public static void main(String[] args) throws AWTException, Exce

我使用的是
java.util.Scanner
,如果用户输入超出范围,我想过滤掉它,例如只接受0、1、2或3。也许是这样的:

if !(sc.hasNextInt 0,1,2,3

我知道这不是有效的语法,但我想展示一下我的意图。我如何告诉Java不要存储不符合我标准的用户输入?

这是您必须自己实现的东西--它不是扫描仪所支持的东西。一种典型的方法是有这样的循环:

    public static void main(String[] args) throws AWTException, Exception {

            Scanner  sc = new Scanner(System.in);
            while(sc.hasNextInt())
            { int val= sc.nextInt();
                if(val==0||val==1 || val==2||val==3)
                {
                    // your code here

                }
               else
                {
                    System.out.println("wrong number, enter again");
                }
            }
        }
int input;
do {
    input = sc.nextInt();
} while (input < 0 || input > 3);
int输入;
做{
输入=sc.nextInt();
}而(输入<0 | |输入>3);
公共类测试1
{
公共静态void main(字符串[]args)
{
List lst=new ArrayList();
//根据您的情况,多次接受用户输入。
System.out.println(“请输入一个数字:”);
扫描仪sc=新的扫描仪(System.in);
int i=sc.nextInt();
如果(i==0 | | i==1 | | i==2 | | i==3)
{
第1段添加(i);
}
//回去
}
}

请发布否决投票的原因,以便我将来可以改进我的答案:)(注:我不是向下投票人)向下投票的可能原因可能是您在if语句中多次调用sc.nextInt(),这是不正确的。您应该调用sc.nextInt()一次,并将其返回值存储在变量中,然后在if语句中使用它进行比较。
public class Test1
{
    public static void main(String [] args)
    {
        List<Integer> lst= new ArrayList<Integer>();
        //Take user input any number of times based on your condition.

        System.out.println("Please enter a number :");
        Scanner sc= new Scanner(System.in);
        int i= sc.nextInt();
        if(i==0 || i==1 || i==2 ||i==3)
        {
            lst.add(i);
        }
        //Go back
    }
}