1.Exception in thread "main" ja.lang.ArrayIndexOutOfBoundsException: 3

2.ja数组代码,为什么会越界,我该怎么改

3.JAVA 数组下标越界问题

4.请大神指点,ja数组越界。。。。。。。。

ja 数组越界_java数组越界例题

你这个ArrayIndexOutOfBoundsException应该是来自String str = args[0];这句,你定义的对象应该没有越界。

String str = args[0];意思是,你执行该程序的时候是带着参数执行的,比如ja StudentTest2 xxx

Exception in thread "main" ja.lang.ArrayIndexOutOfBoundsException: 3

意思是 你对你的数组

访问下标2 的时候 ,越界了。(可知 你的数值长度为2。)

如果你的数值 长度为10 时

你访问 数组的10 下标 ,就会显示 越界。

这时候 就提示:ja.lang.ArrayIndexOutOfBoundsException: 10

注意: 数组下标是从0 开始的。

ja数组代码,为什么会越界,我该怎么改

数组越界了

注意数组的下标是从0开始,如:

定义数组int []a = new int[3] 那么元素为 a[0],a[1],a[2] ,访问a[3],即数组越界

循环的时候

for (i = 0; i < a.length; i++) { // 不能<=a.length

...

}

JAVA 数组下标越界问题

你这里是忽略了循环的一个问题,

当循环 i不满足i<b.length的时候 i也就等于4了(这里已经执行了i++ 所以是4)

循环j不满足j<b[i].length的时候 j也就等于5了

而你后面取值b[4][5] 肯定是越界的 nt b[][]=new int[4][5]; 最大取值是b[3][4] 这里是因为数组是从0开始所以3取得就是第4位

请大神指点,ja数组越界。。。。。。。。

你的循环条件错了。

因为数组的索引下标是从0开始的。如果定义了一个长度为3的数组int[] a=new int[3];

它里面的数据存放在a[0],a[1],a[2] 中 如果在有一个a[3] 就错了。所以你的循环条件要改一改 改成 for(int i=0;i<x;i++) 或者是 for(int i=0;i<=x-1;i++) 就好使了

你这类写的不合理。暂时不提数组越界的问题,你应该是要实现比较两个时间前后吧。但是你这样写是实现不了的。main方法太臃肿了,而且思路也有问题,实现不了所需的功能,最好单独写个方法来比较两个时间的前后,比如before,after,类似ja.util.Date中的方法。

package day0503;

public class TestDate {

public static void main(String[] args) {

DateForTest[] days=new DateForTest[4];

days[0]=new DateForTest(2004,3,21);

days[1]=new DateForTest(2005,3,15);

days[2]=new DateForTest(2006,3,9);

days[3]=new DateForTest(2010,4,5);

//输出原来的时间序列

System.out.println("输出原来的时间序列:");

for(DateForTest d1:days){

System.out.println(d1.toString());

}

//把几个day按时间从早到迟排列

for(int i=0;i<days.length;i++){

DateForTest temp=new DateForTest();

for(int j=days.length-1;j>i;j--){

//如图days[j]比days[j-1]迟,则交换两个时间的位置

if(days[j].after(days[j-1])){

temp=days[j];

days[j]=days[j-1];

days[j-1]=temp;

}

}

}

//输出新的时间序列

System.out.println("输出新的时间序列:");

for(DateForTest d2:days){

System.out.println(d2.toString());

}

}

}

————————————————————————————————————

package day0503;

public class DateForTest {

private int year;

private int month;

private int day;

public DateForTest(){}

public DateForTest(int year,int month,int day){

this.year=year;

this.month=month;

this.day=day;

}

//如果该时间比date早则返回true否则返回false;

public boolean before(DateForTest date){

if(this.year==date.year){

if(this.month==date.month){

if(this.day<date.day){

return true;

}else{

return false;

}

}else if(this.month<date.month){

return true;

}else{

return false;

}

}else if(this.year<date.year){

return true;

}else{

return false;

}

}

//如果该时间比date晚则返回true否则返回false;

public boolean after(DateForTest date){

if(this.year==date.year){

if(this.month==date.month){

if(this.day>date.day){

return true;

}else{

return false;

}

}else if(this.month>date.month){

return true;

}else{

return false;

}

}else if(this.year>date.year){

return true;

}else{

return false;

}

}

public String toString(){

return year+"年"+month+"月"+day+"日";

}

}