所以我对打印数组有疑问。这些方法从文件创建的数组中接收数据。由于文件中包含的整数很多,因此每行输出应为10个整数。假设文件包含{0,1,2,3,4,5},输出应为:
0 1 2 3 4 5
第一种方法完全正常。第二种方法返回一个错误,我将在下面包含这个错误。任何人都可以帮我弄清楚什么是错的?我试过谷歌搜索但仍然不明白。这是代码:
public static void printArray(int[] array){
System.out.println("Printing array: ");
for (int i = 1; i<array.length+1; i++){
System.out.printf("%7d", array[i-1]);
if (i%10==0){
System.out.println();
}
}
System.out.println();
}
public static void reverseArray(int[] array){
System.out.println("Printing reversed array: ");
int a=0;
for (int i = array.length; i>-1; i--){
System.out.printf("%7d", array[i]);
a++;
if (a%10==0){
System.out.println();
}
}
System.out.println();
}
这是错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at Paniagua_ArrayProcessing.reverseArray(Paniagua_ArrayProcessing.java:49)
at Paniagua_ArrayProcessing.main(Paniagua_ArrayProcessing.java:8)
感谢您的帮助!希望这只是一个简单的问题。
编辑:这是在java btw。
答案 0 :(得分:3)
数组从0
转到length-1
。将您的代码更改为:
for (int i = array.length-1; i>-1; i--){
代码可以运行。
您可以在此处详细了解:Java Language Basics: Arrays
答案 1 :(得分:3)
数组从索引0
开始,以array.length - 1
结尾。这就是为什么在访问数组的array.length
'条目期间得到一个ArrayIndexOutOfBoundsException的原因(这是最后一个条目后面的一个。
public static void printArray(int[] array){
System.out.println("Printing array: ");
for (int i = 0; i < array.length; i++){
System.out.printf("%7d", array[i]);
if (i % 10 == 0){
System.out.println();
}
}
System.out.println();
}
此外,您对反向阵列打印中第10个条目的检查不正确,每次都会重置。
public static void reverseArray(int[] array){
System.out.println("Printing reversed array: ");
for (int i = array.length - 1; i >= 0; i--){
System.out.printf("%7d", array[i]);
if ((array.length - i) % 10 == 0){
System.out.println();
}
}
System.out.println();
}
答案 2 :(得分:0)
啊这是一个简单的用法:
public class reversearray {
public static void main(String args[]){
int arr[]={10,20,30,20,40,50};
int size=arr.length;
**for(int i=size-1;i>=0;i--)**{ //This is the imp change
System.out.println(arr[i]);
}
}
}
答案 3 :(得分:0)
将array.length更改为array.length-1,因为数组的最后一个索引是length-1
public static void reverseArray(int[] array){
System.out.println("Printing reversed array: ");
int a=0;
for (int i = array.length-1; i>=0; i--){
System.out.printf("%7d", array[i]);
a++;
if (a%10==0){
System.out.println();
}
}
System.out.println();
}