我正在尝试获取int数组之间的最小值及其索引。
我不明白为什么如果在main方法中使用for循环不起作用,但是如果在aux方法中使用相同的代码则起作用。该代码应该是正确的。
被注释的代码部分是无效的for循环。
package minimoArray;
import java.util.Scanner;
public class minimoArray {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Inserisci 10 numeri interi: ");
int [] Arr = new int [10];
//int a = Arr[0];
int b = 0;
for (int i = 0; i < Arr.length; i++) { //NON si può riempire l'array con for-each
Arr[i] = scanner.nextInt();
}
/*
for (int i = 0; i < Arr.length; i++) {
if (Arr[i] < a) {
a = Arr[i];
b = i;
}
}*/
int minimo = minimo(Arr);
for (int i = 0; i < Arr.length; i++) {
if (Arr[i] == minimo) {
b = i;
}
}
System.out.println(" il minimo è: " + minimo);
System.out.println(" l'indice del minimo è: " + b);
}
private static int minimo (int [] a) {
var min = a[0];
for (int i = 1; i < a.length; i++) {
if (a[i] < min ) {
min = a[i];
}
}
return min;
}
}
编辑:刚刚看到也a
被注释掉了,我的错误。但是,此处Nicktar的答案适用于您将a设置为数组的第一个元素(其编号尚未设置)的原因。解决方案保持不变。
首先,坚持Java的命名约定。类以大写字母开头,变量以小写字母开头。
您在方法中的for
循环中所犯的错误是甚至没有在其中定义,因此整个循环甚至都不应编译。main
a
只需var a = Arr[0];
在循环之前添加,然后从索引1开始循环。