打印数组的反向时出现 ArrayIndexOutOfBoundsException
ArrayIndexOutOfBoundsException when printing the reverse of an array
当运行它在cmd中显示错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 at Reverse.main(Reverse.java:18)
我的密码是
import java.util.*;
class Reverse
{
public static void main (String agrs[])
{
Scanner sc = new Scanner (System.in);
int a,r,s;
System.out.print("Enter Number: ");
r= sc.nextInt();
int num[]=new int[r];
for (a=0;a<r;a++)
{
System.out.print("Enter Number: "+(a+1)+":");
num[a]=sc.nextInt();
}
System.out.println("\n Displaying number in reverse order\n-----------\n");
for (a= num[a]-1;a<0;a--)
{
System.out.println(num[a]);
}
}
}
由于我是 java 的新手,我对如何解决这个问题感到困惑。
问题在这里:
for (a= num[a]-1;a<0;a--){
System.out.println(num[a]);
}
ArrayIndexOutOfBoundsException 表示数组没有 num[a] - 1
.
的索引
试试这个:
for (a = r - 1; a >= 0; a--){
System.out.println(num[a]);
}
或使用num.length - 1
:
for (a = num.length - 1; a >= 0; a--){
System.out.println(num[a]);
}
感谢mmking的回答,您解决了问题
现在让我们考虑如何使用 java 8 个特征来打印数组的反转。
数值流的使用
int num[] = { 5, 6, 7, 8 };
IntStream.range(1, num.length + 1).boxed()
.mapToInt(i -> num[num.length - i])
.forEach(System.out::println);
使用Collections.reverseOrder
Stream.of(5, 6, 7, 8).sorted(Collections.reverseOrder())
.forEach(System.out::println);
使用descendingIterator
Stream.of(5, 6, 7, 8).collect(Collectors.toCollection(LinkedList::new))
.descendingIterator().forEachRemaining(System.out::println);
输出
8
7
6
5
当运行它在cmd中显示错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 at Reverse.main(Reverse.java:18)
我的密码是
import java.util.*;
class Reverse
{
public static void main (String agrs[])
{
Scanner sc = new Scanner (System.in);
int a,r,s;
System.out.print("Enter Number: ");
r= sc.nextInt();
int num[]=new int[r];
for (a=0;a<r;a++)
{
System.out.print("Enter Number: "+(a+1)+":");
num[a]=sc.nextInt();
}
System.out.println("\n Displaying number in reverse order\n-----------\n");
for (a= num[a]-1;a<0;a--)
{
System.out.println(num[a]);
}
}
}
由于我是 java 的新手,我对如何解决这个问题感到困惑。
问题在这里:
for (a= num[a]-1;a<0;a--){
System.out.println(num[a]);
}
ArrayIndexOutOfBoundsException 表示数组没有 num[a] - 1
.
试试这个:
for (a = r - 1; a >= 0; a--){
System.out.println(num[a]);
}
或使用num.length - 1
:
for (a = num.length - 1; a >= 0; a--){
System.out.println(num[a]);
}
感谢mmking的回答,您解决了问题
现在让我们考虑如何使用 java 8 个特征来打印数组的反转。
数值流的使用
int num[] = { 5, 6, 7, 8 };
IntStream.range(1, num.length + 1).boxed()
.mapToInt(i -> num[num.length - i])
.forEach(System.out::println);
使用Collections.reverseOrder
Stream.of(5, 6, 7, 8).sorted(Collections.reverseOrder())
.forEach(System.out::println);
使用descendingIterator
Stream.of(5, 6, 7, 8).collect(Collectors.toCollection(LinkedList::new))
.descendingIterator().forEachRemaining(System.out::println);
输出
8
7
6
5