我有一个应该返回数组最小值的方法。数组位于方法的参数中,因此您在创建类的对象时输入自己选择的值。这是我到目前为止提出的方法:
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;。
提前致谢。
答案 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