我试图从用户输入中捕获最低的双倍。我只捕获初始化的min变量的值 - 我错过了什么?谢谢!
public static void main(String[] args) {
double[] lowNum = new double[10];
Scanner input = new Scanner(System.in);
for (int i=0; i<=9; i++) {
System.out.println("Enter a double: ");
lowNum[i] = input.nextDouble();
}
input.close();
double min = calcLowNum(lowNum);
System.out.println(min);
}
public static double calcLowNum(double[] a) {
double min=0;
for (int i=0; i>=9; i++){
for (int j=0; j>=9; j++){
if (a[i]<=a[j] && j==9){
min=a[i];
}
else {
continue;
}
}
}
return min;
答案 0 :(得分:2)
首先,将i>=9
和j>=9
更改为i<=9
和j<=9
:
for (int i=0; i>=9; i++){
for (int j=0; j>=9; j++){
否则,你的循环实际上是无操作。
更强大的方法是像这样编写循环:
for (int i = 0; i < a.length; i++) {
或者像这样:
for (double val : a) {
最后,找到最小值可以通过迭代数组一次,将每个元素与当前最小值进行比较(但请确保正确初始化min
)。
答案 1 :(得分:2)
您可以使用Collections#min查找最小值。不过,您需要Apache Commons-Lang
。
// This would be the array 'a'
double[] array = {15, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
// Convert the primitive array into a Class array
Double[] dArray = ArrayUtils.toObject(array);
List<Double> dList = Arrays.asList(dArray);
// Find the minimum value
Double returnvalue = Collections.min(dList);
return returnvalue; // or you can do returnvalue.doubleValue() if you really want
答案 2 :(得分:1)
如果你真的需要存储所有输入,而不是找到最小,最简单的方法来使用库函数来排序数组:
...
//sorting array, so first element will be the lowest
Arrays.sort(lownum);
double min = lownum[0];
我同意Peter Lawree你实际上并不需要所有阵列;您需要保存第一个输入,并将所有以下内容与之进行比较,如果较低则存储:
double lastInput=0, min=0;
for (int i=0; i<=9; i++) {
System.out.println("Enter a double: ");
lastInput = input.nextDouble();
if (0==i) {
//if this is first iteration, save first input as min
min=lastInput;
} else {
if (lastInput<min) min=lastInput;
}
}
return min;
P.S。实际上,你应该使用Double.compare来比较双打。如果输入数量不是很大,那么使用Arrays.sort()的例子就更好了,在这种情况下,第一个例子将需要更多的内存和时间来执行。
更新:Java8解决方案
double findMin(double[] input) {
return Arrays.stream(input).min().getAsDouble();
}
答案 3 :(得分:-1)
public static double min(double... array) {
checkArgument(array.length > 0);
double min = array[0];
for (int i = 1; i < array.length; i++) {
min = Math.min(min, array[i]);
}
return min;
}
P.S:用标准代码学习库,不要重新发明轮子。快乐!