我练习数组,并且我试图打印出用户输入列表的列表中的每个元素。我在最后一次for循环中遇到了麻烦。我不确定我做错了什么。 *我正在学习java独奏。
public static void main(String[] args) {
System.out.println("Enter the length of the array: ");
Scanner input = new Scanner(System.in);
int length = input.nextInt();
int[] arr;
arr = new int[length];
//Asks the user to input values into a list
for (int counter = 0; counter < length; counter++){
System.out.println("Enter number into list: ");
int number = input.nextInt();
arr[counter] = number;
}//end of for-
System.out.println("The list is below: ");
System.out.printf("%s%8s\n", "Index", "Entry");
//ERROR: This is where the error occurs!!!!!
//Displays the list to the user
for (int count: arr){
System.out.printf("%d%8d\n"
, count, arr[count]);
}//end of for-
}//end of main method
编辑:我通过添加公共计数变量修复了我的代码。然后在最后一个for循环中调用该变量,等等。如果PLS LMK有更好的方法!!
答案 0 :(得分:0)
增强的for循环将遍历值,索引本身将是隐式的,不可访问。
你可能想要这样的东西:
for (int i = 0; i < arr.length: arr++){
System.out.printf("%d%8d\n", i, arr[i]);
}
...或者如果你想使用增强的for循环:
for (int value : arr){
System.out.printf("%d\n", value);
}
...但是你没有索引。
答案 1 :(得分:0)
//ERROR: This is where the error occurs!!!!!
//Displays the list to the user
for (int count: arr){
System.out.printf("%d%8d\n"
, count, arr[count]);
}//end of for-
这不正确。假设您有一个值为[1, 2, 300]
的数组。您使用代码获得的输出将是:
1, 2
2, 300
Index error
这是因为您正在调用arr[count]
,在我的示例中,计数将变为300
,因此您将尝试访问数组中的索引300
,它不存在。你在寻找的是:
for(int index : arr) {
System.out.println(index);
}
这将打印出arr
中的所有元素。如果你想打印出索引,然后打印出该索引的相应值,你需要像这样做一个常规的for循环:
for(int i = 0; i < arr.length; i++) {
System.out.println(i + " " + arr[i]);
}
答案 2 :(得分:0)
这就是你需要改变的全部内容:
for (int count: arr){
System.out.println(count);
}
此处的计数实际显示您放入数组的值。
因此,如果您输入了12,13,14作为输入,则此计数将显示12,13和14。
数组的长度是您采用的第一个输入,与数组输入不同。
要打印索引,您可以执行以下操作:
int c =0;
for (int count: arr){
System.out.println(c);
System.out.println(count);
c++;
}