java - 在 float 数组中查找最小值

标签 java arrays

在学校里,我们被要求创建一个函数来找到 float 组中的最小值。在前 2 个数组中它起作用。但是因为第三个数组只包含负值,所以它们都低于初始化时给定的值。所以它仍然是 0.0。

有人能帮忙吗?

float[] numbers = {3.3, 4.5, 7.2, 5.3, 9.0, 2.3}; // min 2.3, max 9.0
float[] numbers2 = {-8.0, 4.5, 1.2, -5.6, -9.1, 4}; // min -9.1, max 4.5
float[] numbers3 = {-0.4, -0.7, -3.5, -1.9, -8.0}; // min -8.0, max -0.4

void setup() {
  float highest = returnHighest(numbers);
  float highest2 = returnHighest(numbers2);
  float highest3 = returnHighest(numbers3);
  println("The highest grade is: " + highest);
  println("The highest grade is: " + highest2);
  println("The highest grade is: " + highest3);
}

float returnHighest(float[] numbers) {
  float highest = 0;

  for(int i = 0; i < numbers.length; i++) {
    if(numbers[i] > highest) {
      highest = numbers[i];
    }
  }

  return highest;
}

最佳答案

But because the 3rd array only contains negative values they're all lower than the value given at initialization.

答案是……有点……简单。您可以使用数组中的数字之一 (1) 初始化变量 lowest,也可以使用 lowest possible float value 对其进行初始化。 (2).

(1) 用数组中的数字初始化变量:

float highest = numbers[0];

使用此解决方案,您首先必须确保没有空数组。否则你会得到一个 ArrayIndexOutOfBoundsException .

(2) 使用尽可能低的浮点值初始化您的变量:

float highest = Float.NEGATIVE_INFINITY;

每个浮点值都大于 Float.NEGATIVE_INFINITY(好吧……除了负无穷大值本身)。在循环之后,您可以检查 highest 是否仍然等于 Float.NEGATIVE_INFINITY。在那种情况下,数组为空或仅包含负无穷大。

我会推荐方法 (2)。这是查找集合/数组的最低/最高值的常见模式,也可以很好地处理空集合/数组。

关于java - 在 float 数组中查找最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46559123/

相关文章:

java - 如何将泛型类型 ArrayList 设为静态?

java - vtd-xml 的编码问题

java - 为什么 Java GUI 中的大循环滞后/卡住?

JavaScript:对象(变量)是什么?

c++ - 整数数组中每个元素的数字总和

java - 可以使用 ASM 将方法添加到现有的 Java 类吗?

java - 使用 JSON 升级到 Spring MVC 4.1 发生 HTTP 406 错误

javascript - 比较两个对象数组

java - 使用随机生成器查找数组中缺失的数字

java - 在数组中使用文本文件。文本文件有 15 行,名称和 4 个分数重复 3 次。无法获取数组来抓取文本数据