【问题标题】:How to find the minimum, maximum , and mode in an array using if statements and for loops (java)?如何使用 if 语句和 for 循环(java)在数组中找到最小值、最大值和模式?
【发布时间】:2017-09-16 13:24:19
【问题描述】:

这里的第一个问题,所以请放轻松。目前学习java是为了好玩,我希望我能在要求这个时挑选你们的大脑。

        for (int i = 0; i < num; i++) {
            if (score[i] > max) {
                max = score[i];
            }
        }
        
        for (int i = 0; i < num; i++) {
            if (score[i] < min) {
                min = score[i];
            }
        }

当我运行代码时,它给了我数组的最大值,但带有最小值的位并没有给我数组中输入集的最小值。

我遇到的下一个问题是模式,我什至不知道从哪里开始,我真的不知道任何复杂的东西,所以一些简单的东西对我很有帮助。谢谢大家!

【问题讨论】:

  • 在运行循环之前,您将min 初始化为什么?
  • 将最小值和最大值存储在可能的同一区域是否有问题。?在某些情况下,找到一个值会阻止找到第二个值。
  • 关于分钟的问题。你如何在循环之前初始化 min ?
  • 关于模式。您可以尝试使用 map 来存储每个元素的计数。

标签: java arrays max mode minimum


【解决方案1】:

就像其他一些答案所暗示的那样,我认为问题在于“min”的正确初始化。尝试使用数组的第一个值进行初始化。

// example data
int[] score = {3,1,5,7,2}; 

// initialize min with first score value
int min = score[0];

// find minimum (note that one could start with i = 1, assuming score.length is at least 2)
for(int i = 0; i < score.length; i++) {
   if(min > score[i])
      min = score[i];
}
System.out.println(min); // should print '1'

将代码放入“findMin(int[] arr)”之类的方法中时,请记住确保处理空数组或长度为 1 的数组!

请提供有关“模式”含义的更多信息

【讨论】:

  • 众数是在给定的一组数字中出现频率最高的数字,因此,在 {1,1,2,5} 的 4 个数字集中,1 是众数。对于我正在尝试编写的这个程序,用户说他们想输入多少个数字,我需要使用 for 循环来遍历数组以找到它
【解决方案2】:

如果您在 for 循环之外初始化 min 变量,则最小循环似乎是正确的。此外,检查并查看您将 min 初始化为的值是否低于您正在检查的所有元素的实际最小值。这会给你一个错误的读数。

至于模式部分,您需要找到最常出现的数字。想想你会怎么做。一种可能性是扫描数组并为每个数字设置一个计数器,并在每次在数组中找到该数字时递增其计数器。这可能不是最好的解决方案,因为您需要为数组中的每个不同数字设置一个计数器,但这是一个易于理解的简单示例,并有望为您指明正确的方向。试试看,如果您需要更多帮助或想要更好的解决方案,我会编辑和更新。

【讨论】:

  • 一个更好的提示是让一个变量跟踪最高的多重性,并使用 2 个 for 循环将数组中的每个元素与所有其他元素进行比较并计算出现次数。如果当前多重性大于最高,则新的最高将成为当前元素,您可以跟踪哪个元素具有该多重性。
【解决方案3】:
if(score[0]>score[1])
{
  max=score[0];
  min=score[1];
}
else{

  min=score[0];
  max=score[1];
}
for (int i = 2; i < num; i++) {
            if (score[i] > max) {
                max = score[i];
            }
        }

        for (int i = 2; i < num; i++) {
            if (score[i] < min) {
                min = score[i];
            }
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 2018-09-21
    • 1970-01-01
    • 2013-12-04
    • 1970-01-01
    • 2021-02-10
    • 2021-06-17
    相关资源
    最近更新 更多