java数组越界问题,我是新手,求高手解决啊!

elvaers 2014-11-25 06:36:02
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)

...全文
198 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyc_ 2014-11-25
  • 打赏
  • 举报
回复
vct.insertElementAt("nice",vct.capacity()/2 );改为vct.insertElementAt("nice",vct.size()/2 ); capacity是容量,默认为10。size是里面的元素个数。
姜小白- 2014-11-25
  • 打赏
  • 举报
回复
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个位置插入,所以出错

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧