【问题标题】:How to find the second lowest and second highest number in a user-inputted list using loops and no arrays [closed]如何使用循环而不使用数组在用户输入的列表中找到第二低和第二高的数字[关闭]
【发布时间】:2017-04-02 18:31:44
【问题描述】:

对于我的程序,我需要从 8 个用户输入的整数中找到最高对和最低对,我需要使用循环并且没有数组。 前任。 6, 7, 8, 9, 10, 11, 12, 13 应该返回: (13, 12) , (6, 7)

我应该如何使用循环找到第二高和第二低的数字?

【问题讨论】:

  • “最高对和最低对”是什么意思?他们的总和是否使他们成为最低/最高的一对?
  • @GaryJohnson 我的意思是两个最高的数字和两个最低的数字。
  • 思考如何处理数组中的数字可能会有所帮助。无论哪种方式,您都需要一个循环。唯一的区别是循环不是从数组中获取元素,而是直接从键盘获取元素。
  • 想想如何找到最高和最低的数字也可能会有所帮助。让它发挥作用,然后考虑如何更改它以同时找到第二高和第二低。

标签: java loops java.util.scanner


【解决方案1】:

这是在没有数组的情况下在用户输入中找到最小数字的方法。

Scanner sc = new Scanner(System.in);
int lowest;
for(int i = 0; i < 8; i++) {
    int temp = sc.nextInt();
    if(i == 0) lowest = temp;
    else if(lowest > temp) lowest = temp;    
}

return lowest;

现在这也可用于查找最大数字,只需将else if 中的&gt; 符号切换为&lt;,您将在输入中找到最大数字。

然后,您可以使用此过程通过添加更多变量来找到最低和最高对。

【讨论】:

    【解决方案2】:

    我会寻找最高和最低值,并跟踪之前的最高和最低值,如下所示:

    import java.io.*;
    import java.util.Scanner;
    
        public static void findMaxMinPairs() {
        Scanner scanner = new Scanner(System.in);
    
        int min1=Integer.MAX_VALUE;int min2=Integer.MAX_VALUE; int max1=Integer.MIN_VALUE; int max2=Integer.MIN_VALUE;
        while (scanner.hasNext()) {
        int curr = scanner.nextInt();
            if(curr < min1){
                min2 = min1;       
                min1 = curr;
    
            }else if(curr < min2) {
                   min2 = curr;
            }
            if(curr > max1){
              max2 = max1;       
              max1 = curr;
            }else if(curr >max2) {
              max2 = curr;
            }
       }
       System.out.println("("+min1+","+min2+") ,("+max1+","+max2+")");
       scanner.close();
    
      }
    

    【讨论】:

      【解决方案3】:

      将整数读入数组

      Scanner scanner = new Scanner(System.in);
      int[] array = new int[8];
      
      for (int i = 0; i < array.length; i++) {
          array[i] = Integer.parseInt(scanner.next());
      }
      

      对数组进行排序

      Arrays.sort(array);
      

      打印出你感兴趣的4个整数

      int min1 = array[0];
      int min2 = array[1];
      int max1 = array[6];
      int max2 = array[7];
      
      System.out.println("(" + max2 + "," + max1 + "), (" + min1 + "," + min2 + ")");
      

      【讨论】:

      • 该问题明确表示不允许使用数组。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-18
      • 2018-06-03
      • 1970-01-01
      • 1970-01-01
      • 2020-08-18
      • 1970-01-01
      相关资源
      最近更新 更多