ja 数组越界_java数组越界例题
1.Exception in thread "main" ja.lang.ArrayIndexOutOfBoundsException: 3
2.ja数组代码,为什么会越界,我该怎么改
3.JAVA 数组下标越界问题
4.请大神指点,ja数组越界。。。。。。。。
你这个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+"日";
}
}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。