现在遇到的问题是报错,这个错误该怎修改?
//我写的代码如下
import java.util.*;
public class A{
public static void main(String[] args){
Random rand=new Random();
int []a=new int[25];
for (int i=0;i<a.length ;i++ ) {
int r=rand.nextInt(100)+1;
a[i]=r;
}
String s="";
String x="";
for (int i=0;i<25 ;i++ ) {
if (a[i]>a[i+1]) {
s=s+">"+a[i+1];
}
if (a[i]<a[i+1]) {
s=s+"<"+a[i+1];
}
if (a[i]==a[i+1]) {
s=s+"="+a[i+1];
}
x=s;
System.out.println(a[0]+x);
}
}
}
8<50
8<50>40
8<50>40<70
8<50>40<70>42
8<50>40<70>42<81
8<50>40<70>42<81>61
8<50>40<70>42<81>61>24
8<50>40<70>42<81>61>24<76
8<50>40<70>42<81>61>24<76>3
8<50>40<70>42<81>61>24<76>3<100
8<50>40<70>42<81>61>24<76>3<100>5
8<50>40<70>42<81>61>24<76>3<100>5<27
8<50>40<70>42<81>61>24<76>3<100>5<27<81
8<50>40<70>42<81>61>24<76>3<100>5<27<81>36
8<50>40<70>42<81>61>24<76>3<100>5<27<81>36<92
8<50>40<70>42<81>61>24<76>3<100>5<27<81>36<92>64
8<50>40<70>42<81>61>24<76>3<100>5<27<81>36<92>64>56
8<50>40<70>42<81>61>24<76>3<100>5<27<81>36<92>64>56=56
8<50>40<70>42<81>61>24<76>3<100>5<27<81>36<92>64>56=56<57
8<50>40<70>42<81>61>24<76>3<100>5<27<81>36<92>64>56=56<57<70
8<50>40<70>42<81>61>24<76>3<100>5<27<81>36<92>64>56=56<57<70>54
8<50>40<70>42<81>61>24<76>3<100>5<27<81>36<92>64>56=56<57<70>54<83
8<50>40<70>42<81>61>24<76>3<100>5<27<81>36<92>64>56=56<57<70>54<83>40
8<50>40<70>42<81>61>24<76>3<100>5<27<81>36<92>64>56=56<57<70>54<83>40>14
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 25
at A.main(A.java:14)
输出完成 (耗时 0 秒) - 正常终止
这里的a[i+1]会访问到a[25] 但是数组开辟空间只开到a[24],没a[25],造成了越界访问
简单来说就是:数组所创建的范围已经超过使用的范围了——越界了
希望对题主有所帮助!可以的话,帮忙点个采纳!
错误意思是数组访问越界了。下标值超出了数组的长度
if (a[i]>a[i+1]) {
s=s+">"+a[i+1];
这里有问题啊,当i等于24的时候,a[i+1]就是a[25],越界了,最大下标是24
你需要判断i是否为24,如果是24,直接输出a[i]就可以了,最后一个元素不需要考虑大于还是小于