【问题标题】:How to find the median of 5 integers in java如何在java中找到5个整数的中位数
【发布时间】:2020-02-03 15:25:40
【问题描述】:

所以我是编程新手,我的老师希望我们找到使用 if 语句的媒介(我问过他,但他并没有真正帮助)我们还没有学习扫描仪、循环、数组等。所以所有我知道是 bufferedReader、import.java.io 和基础知识。我已经写出了 if 语句,但我仍然对如何让它输出中位数感到困惑。数字是 1-5,所以我知道中位数是 3。这就是我的 if 语句。

        if (num1<num2) 
            System.out.println(num1 + "is less than" + num2);
        if (num1<num3)
            System.out.println(num1 + "is less than" + num3);
        if (num1<num4)
            System.out.println(num1 + "is less than" + num4);
        if (num1<num5)
            System.out.println(num1 + "is less than" + num5);
        if (num2>num1)
            System.out.println(num2 + "is greater than" + num1);    
        if (num2<num3)
            System.out.println(num2 + "is less than" + num3);
        if (num2<num4)
            System.out.println(num2 + "is less than" + num4);
        if (num1<num5)
            System.out.println(num1 + "is less than" + num5);
        if (num3>num1)
            System.out.println(num3 + "is greater than" + num1);
        if (num3>num2)
            System.out.println(num3 + "is greater than" + num2);
        if (num3<num4)
            System.out.println(num3 + "is less than" + num4);
        if (num3<num5)
            System.out.println(num3 + "is less than" + num5);
        if (num4>num1)
            System.out.println(num4 + "is greater than" + num1);
        if (num4>num2)
            System.out.println(num4 + "is greater than" + num2);
        if (num4>num3)
            System.out.println(num4 + "is greater than" + num3);
        if (num4<num5)
            System.out.println(num4 + "is less than" + num5);
        if (num5>num1)
            System.out.println(num5 + "is greater than" + num1);
        if (num5>num2)
            System.out.println(num5 + "is greater than" + num1);
        if (num5>num3)
            System.out.println(num5 + "is greater than" + num3);
        if (num5>num4)
            System.out.println(num5 + "is greater than" + num4);

【问题讨论】:

  • 您刚刚编写了比较所有值的 if 语句(并打印出语句)。您应该考虑中值的含义,以及如何找到中值。然后你应该打印出单个中值。
  • 你在标题中写了中位数,在描述中写了中位数。假设您寻找中位数,答案是 num3。
  • 为什么不对列表进行排序?之后,您唯一需要的if 语句就是确定列表的长度是偶数还是奇数。
  • @DannyFried 没有人说他们已排序。
  • 另外,愚蠢的问题:我假设您知道如何“手动”计算中位数?

标签: java median


【解决方案1】:

我不想给你答案;但这里有一些提示。

if 语句可以在括号内接受多个条件,例如:

if(a>b && b < 10){...}

您还可以将if 语句相互嵌套:

if(a>b){
   if(b<10){...}
}

最后你可以有一个else条件,当条件不满足时会执行

if(a>b){
   ...
} else {
   ...
}

当然,这些都可以组合在一起,嵌套多个条件的 if 和嵌套在 else 块中的 if。

正如我所说,我不想为您的问题提供答案,因为我认为这不是学习如何做到这一点的最有效方法;但希望这对您的知识和理解有些深刻和有意义。

【讨论】:

    【解决方案2】:

    如果您有 555 个号码怎么办?你会再写一遍所有可能的组合吗?这实际上需要几天时间。

    考虑使用一些数据结构,例如使用数组来存储您的数字:

    int[] array = new int[] {1, 2, 3, 4, 5};
    

    中位数是中间的元素,3。

    int[] array2 = new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9};
    

    这里的中位数是 5。

    要找到中位数(假设数字总是按顺序排列),您可以执行以下操作:

    1. 找出数组的大小(你有多少元素)
    2. 如果大小为奇数,则中位数为中间元素
    3. 如果大小是偶数,则中位数是两个中间元素的总和除以 2

    使用数组的示例:

     int[] array = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
     int size = array.length;
        if (size % 2 == 1) { // odd
            System.out.println("Median: : " + array[size / 2]);
        } else { // even
            int sum = array[size / 2 - 1] + array[size / 2];
            System.out.println("Median: : " + (float) sum / 2);
        }
    

    但是,我有一种感觉,即使这段代码很简单,你仍然很难理解。我强烈建议您阅读 Java 中的数组和集合 - 只是为了节省一些时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-02
      • 2021-09-19
      • 1970-01-01
      • 2021-03-09
      • 2011-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多