【问题标题】:How to determine when last integer has been entered? Java如何确定输入最后一个整数的时间?爪哇
【发布时间】:2020-04-05 12:52:56
【问题描述】:

我目前必须输入一个字母来停止 while 循环并打印出数字列表。 有没有更好的方法来确定输入最后一个 int 的时间?

` Scanner scanner = new Scanner(System.in);
            System.out.println("Enter a sequence of integer values" +
                    " to be sent to the server");
            List<Integer> numberList = new ArrayList<Integer>();
            while(scanner.hasNextInt()) {
                numberList.add(scanner.nextInt());
            }
            System.out.println(numberList);
            os.write(String.valueOf(numberList));
            scanner.close();`

【问题讨论】:

    标签: java loops arraylist integer


    【解决方案1】:

    按如下方式进行:

    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    
    public class Program {
    
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("Enter a sequence of integer values to be sent to the server (x to terminate)");
            List<Integer> numberList = new ArrayList<Integer>();
            String[] data = scanner.nextLine().split(" ");
            int i = 0;
            while (i < data.length && data[i].matches("\\d+")) {// The regex \d+ matches only integers
                numberList.add(Integer.parseInt(data[i]));
                i++;
            }
            System.out.println(numberList);
        }
    }
    

    示例运行:

    Enter a sequence of integer values to be sent to the server (x to terminate)
    10 20 30 X
    [10, 20, 30]
    

    另外,不要为System.in 关闭Scanner,因为它也会关闭System.in

    如有疑问/问题,请随时发表评论。

    【讨论】:

      【解决方案2】:

      试试这个

      final Scanner scanner = new Scanner(System.in);
      System.out.println("Enter a sequence of integer values to be sent to the server");
      final List<Integer> numberList = new ArrayList<Integer>();
      int scanned;
      do {
          final int scanned = scanner.nextInt();
          numberList.add(scanned);
      } while (scanner.hasNextInt() && scanned != yourChar);
      os.write(String.valueOf(numberList));
      scanner.close();`
      

      希望我正确理解了您的问题。

      【讨论】:

      • 我试图避免输入字符,而是尝试实现知道的功能 - 我希望这能澄清。
      • 好吧,我的错,Arvind 的回答很完美,没有什么可补充的!
      猜你喜欢
      • 1970-01-01
      • 2021-05-02
      • 1970-01-01
      • 2021-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多