java数组越界有关问题,小弟我是新手,求高手解决啊
java数组越界问题,我是新手,求高手解决啊!
import java.util.Scanner;
import java.util.Vector; //向量类;
public class String_ {
static Scanner reader = new Scanner(System.in);
public static void main(String[] args){
Vector vct = new Vector();
System.out.println("请输入支付串:");
String b = reader.next();
vct.addElement(b);
System.out.println("请再次输入:");
String a = reader.next();
vct.addElement(a);
vct.addElement("end");
System.out.println(vct.toString());
vct.insertElementAt("nice",vct.capacity()/2 );
System.out.println(vct.toString());
}
}
这道题原题是: 使用vector向量来保存用户输入的若干个字符串,循环读入用户输入的字符串,以end结束,将所有字符串显示出来,在所有字符串的中间位置插入“nice ”,再次显示所有的字符串。
已经编号:用Eclipse编译错误提示: 希望 高手分析一下错误,感激不尽啊。
请输入支付串:
yuyuhuihj
请再次输入:
hjhjhj
[yuyuhuihj, hjhjhj, end]
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 > 3
at java.util.Vector.insertElementAt(Vector.java:598)
at test.String_.main(String_.java:18)
------解决思路----------------------
Vector() 构造一个空向量,使其内部数据数组的大小为 10,其标准容量增量为零。
public void insertElementAt(E obj, int index)将指定对象作为此向量中的组件插入到指定的 index 处。
此向量中的每个索引大于等于指定 index 的组件都将向上移位,使其索引值变成比以前大 1 的值。
索引必须为一个大于等于 0 且小于等于向量当前大小的值(如果索引等于向量的当前大小,则将新元素添加到向量)。 楼主的当前大小为3
vct.insertElementAt("nice",vct.capacity()/2 ); 相当于
vct.insertElementAt("nice",10/2 ); 效果同 vct.insertElementAt("nice", 5);
你的vct 中只有三个元素,却要给第5个位置插入,所以出错
------解决思路----------------------
vct.insertElementAt("nice",vct.capacity()/2 );改为vct.insertElementAt("nice",vct.size()/2 );
capacity是容量,默认为10。size是里面的元素个数。
import java.util.Scanner;
import java.util.Vector; //向量类;
public class String_ {
static Scanner reader = new Scanner(System.in);
public static void main(String[] args){
Vector vct = new Vector();
System.out.println("请输入支付串:");
String b = reader.next();
vct.addElement(b);
System.out.println("请再次输入:");
String a = reader.next();
vct.addElement(a);
vct.addElement("end");
System.out.println(vct.toString());
vct.insertElementAt("nice",vct.capacity()/2 );
System.out.println(vct.toString());
}
}
这道题原题是: 使用vector向量来保存用户输入的若干个字符串,循环读入用户输入的字符串,以end结束,将所有字符串显示出来,在所有字符串的中间位置插入“nice ”,再次显示所有的字符串。
已经编号:用Eclipse编译错误提示: 希望 高手分析一下错误,感激不尽啊。
请输入支付串:
yuyuhuihj
请再次输入:
hjhjhj
[yuyuhuihj, hjhjhj, end]
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 > 3
at java.util.Vector.insertElementAt(Vector.java:598)
at test.String_.main(String_.java:18)
------解决思路----------------------
Vector() 构造一个空向量,使其内部数据数组的大小为 10,其标准容量增量为零。
public void insertElementAt(E obj, int index)将指定对象作为此向量中的组件插入到指定的 index 处。
此向量中的每个索引大于等于指定 index 的组件都将向上移位,使其索引值变成比以前大 1 的值。
索引必须为一个大于等于 0 且小于等于向量当前大小的值(如果索引等于向量的当前大小,则将新元素添加到向量)。 楼主的当前大小为3
vct.insertElementAt("nice",vct.capacity()/2 ); 相当于
vct.insertElementAt("nice",10/2 ); 效果同 vct.insertElementAt("nice", 5);
你的vct 中只有三个元素,却要给第5个位置插入,所以出错
------解决思路----------------------
vct.insertElementAt("nice",vct.capacity()/2 );改为vct.insertElementAt("nice",vct.size()/2 );
capacity是容量,默认为10。size是里面的元素个数。