从键盘接收数据,如果产生了数组下标越界如何解决?

从键盘接收数据,如果产生了数组下标越界如何解决?

//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;

}


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,当输入数据为负整数时,也是整数,输入没有错误。

而且同学加了当k<0的if判断,当输入小于0时,会被重新输入。

同理,当输入要修改的数组元素位置不符合要求时,也会被要求重新输入。

当出现数组越界时,需要捕获ArrayIndexOutOfBoundsException(数组越界)的异常。

但是,在程序中,应该尽量规避这种情况的发生。处理之前,先判断数组的大小,保证不要访问超过数组大小的元素,这样就不会出现数组越界异常了。

http://img1.sycdn.imooc.com//climg/5cc505bd0001f70d11500491.jpg

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

吃吃吃鱼的猫 2019-04-25 11:40:49

同学你好,这个需要具体情况具体分析哦,建议同学贴出相应的输入信息及报错信息,方便老师帮助同学解决问题。如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 加油啊豪 #1
    /** * 修改指定位置的成绩 * @param a 保存数学成绩的数组 * @param s 修改后的成绩 * @param k 指定的修改位置 */ public void changeScore(int[] a,int s,int k){ Scanner sc=new Scanner(System.in); if(a==null){ System.out.println("还未初始化成绩,请先插入数学成绩!"); }else{ System.out.println("请输入修改后的成绩:"); while(true){//输入修改后的成绩 try{//充分考虑到每一种输入异常 s=sc.nextInt(); if(s<0){ System.out.println("请输入一个大于等于0的整数!请重新输入:"); }else{ break; } }catch(java.util.InputMismatchException e){ System.out.println("输入的数据格式有误,必须为正整数!请重新输入:"); sc.next(); } } System.out.println("请指定位置:(0-"+(a.length-1)+")"); 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(); } } a[k]=s; } }
    2019-04-27 22:13:04
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师