返回数组的最小值

时间:2017-03-03 16:27:50

标签: java arrays if-statement for-loop bluej

我有一个应该返回数组最小值的方法。数组位于方法的参数中,因此您在创建类的对象时输入自己选择的值。这是我到目前为止提出的方法:

public class minsteNummer {

public minsteNummer() {
}

public int minsteNummer(Integer[] nummer) {
    int minste = 0; 

    for(int i = 0; i< nummer.length; i++){
        if(nummer[i] <= nummer.length) {
            minste = i;
            System.out.println("Minste nummer er " + minste);
        } else if(nummer.length == 0) {
            return 0;
        }
    }
    return 0;
} 
}

它没有按照我想要的方式执行,我无法弄清楚它打印的是什么,但它绝对不是数组的小数。我尝试了一个while循环,但这也不起作用。

有谁知道代码中的错误在哪里,以及如何改进它?我还希望它能够返回而不是打印出更小的数字,但是当我尝试将#34;返回minste时;&#34;在if语句中,它表示&#34;意外的返回值&#34;。

提前致谢。

3 个答案:

答案 0 :(得分:2)

您的代码中很少有地方需要关注:

  • 由于方法范围为public,您应始终检查输入无效

  • 不应指定:int minste = 0;,因为给定数组中可能有负数

  • 分配最小数量时,应始终将其与循环当前数字进行比较

    if (minste > nummer[i]) minste = nummer[i];

  • 最后总是返回您的最小号码return minste;

所有在一起:

public static int minsteNummer(Integer[] nummer) {
  if (nummer==null || nummer.length == 0)  {
    throw new IllegalArgumentException("Bad or empty array");
  }
  int minste = nummer[0]; 

  for (int i = 1; i< nummer.length; i++){
    if (minste > nummer[i]) minste = nummer[i];
  }
  System.out.println("Minste nummer er " + minste);
  return minste;
}

值得一提的是,您可以将Java内置功能用于此类基本任务,即按升序排序数组并获取第一个元素:

public static int minsteNummer(Integer[] nummer) {
  if (nummer==null || nummer.length == 0)  {
    throw new IllegalArgumentException("Bad or empty array");
  }
  Arrays.sort(nummer);
  return nummer[0];
}  

答案 1 :(得分:1)

使用流

Integer[] arrayB = null;
OptionalInt min = Arrays.stream(arrayB).mapToInt(Integer::intValue).min();

答案 2 :(得分:0)

\n