【问题标题】:Filtering java.util.Scanner input?过滤 java.util.Scanner 输入?
【发布时间】:2014-01-17 01:34:24
【问题描述】:

我正在使用java.util.Scanner,如果用户输入超出范围,我想过滤掉它,例如只接受 0、1、2 或 3。可能类似于:

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

我知道这不是有效的语法,但我想表明我的目的。如何告诉 Java 不要存储不符合我的条件的用户输入?

【问题讨论】:

    标签: java java.util.scanner


    【解决方案1】:
        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");
                    }
                }
            }
    

    【讨论】:

    • 请张贴拒绝投票的原因,以便我将来改进我的答案.. :)
    • (PS:我不是downvoter)downvote的可能原因可能是您在if语句中多次调用sc.nextInt(),这是不正确的。您应该调用一次 sc.nextInt(),并将其返回值存储在一个变量中,并在 if 语句中使用它进行比较。
    【解决方案2】:
    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
        }
    }
    

    【讨论】:

      【解决方案3】:

      这是你必须自己实现的东西——它不是Scanner 支持的东西。一个典型的方法是有一些像这样的循环:

      int input;
      do {
          input = sc.nextInt();
      } while (input < 0 || input > 3);
      

      【讨论】:

        猜你喜欢
        • 2011-03-04
        • 1970-01-01
        • 2023-03-26
        • 1970-01-01
        • 2014-06-15
        • 2012-02-07
        • 1970-01-01
        相关资源
        最近更新 更多