从键盘接收数据,如果产生了数组下标越界如何解决?
//int[] a 保存数学成绩的数组
//int s 要修改的成绩
//int k 要修改的数组下标
while(true){//指定修改位置
try{//充分考虑到每一种输入异常
k=sc.nextInt();
if(k<0){//为何输入负整数不报错???
System.out.println("请输入一个[0,"+(a.length-1)+"]之间的整数!请重新输入:");
k=0;
}else if(k>a.length){//输入的数值如果产生了数组下标越界如何解决???
k=0;
System.out.println("请输入一个[0,"+(a.length-1)+"]之间的整数!请重新输入:");
}else{
break;
}
}catch(java.util.InputMismatchException e){
System.out.println("输入的数据格式有误,必须为正整数!请重新输入:");
sc.next();
}
}
if(a==null){
System.out.println("还未初始化成绩,请先插入数学成绩!");
}else{
a[k]=s;
}
正在回答
同学你好,当输入数据为负整数时,也是整数,输入没有错误。
而且同学加了当k<0的if判断,当输入小于0时,会被重新输入。
同理,当输入要修改的数组元素位置不符合要求时,也会被要求重新输入。
当出现数组越界时,需要捕获ArrayIndexOutOfBoundsException(数组越界)的异常。
但是,在程序中,应该尽量规避这种情况的发生。处理之前,先判断数组的大小,保证不要访问超过数组大小的元素,这样就不会出现数组越界异常了。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星