首页 > 解决方案 > 从 Scanner 读取多个输入

问题描述

(我是 Java 的初学者)我正在尝试编写一个程序,该程序使用扫描仪向用户询问 6 位数字,然后从这 6 个单独的数字中找到第二高的数字。到目前为止,这可行,但是我希望从单行而不是 6 个单独的行中读取输入。我听说过分隔符和标记化,但不知道如何实现它。我想让它读起来像“输入 6 位数字:1 2 3 4 5 6”并将每个数字解析为一个单独的变量,这样我就可以将它们放在一个数组中,如图所示。如果有人能给我一个关于这将如何工作的概要,那将不胜感激。为你的时间喝彩。

    public static void main(String[] args)
    {
        //Ask user input 
        System.out.println("Enter 6 digits: ");            
        //New Scanner
        Scanner input = new Scanner(System.in);

        //Assign 6 variables for each digit
        int num1 = input.nextInt();            
        int num2 = input.nextInt();            
        int num3 = input.nextInt();            
        int num4 = input.nextInt();            
        int num5 = input.nextInt();            
        int num6 = input.nextInt();            

      //unsorted array
      int num[] = {num1, num2, num3, num4, num5, num6};     
      //Length 
      int n = num.length;     
       //Sort 
      Arrays.sort(num);
       //After sorting
      // Second highest number is at n-2 position

       System.out.println("Second highest Number: "+num[n-2]);

 }           
}   

标签: java

解决方案


有几种方法可以做到这一点:

取一个单行字符串,然后解析它。

        Scanner input = new Scanner(System.in);

        ....
        String numString = input.nextLine();
        String[] split = numString.split("\\s+");
        int num[] = new int[split];
        // assuming there will be always atleast 6 numbers.
        for (int i = 0; i < split.length; i++) {
            num[i] = Integer.parseInt(split[i]);
        }
        ... 
      //Sort 
      Arrays.sort(num);
       //After sorting
      // Second highest number is at n-2 position

       System.out.println("Second highest Number: "+num[n-2]);


推荐阅读