老师,本来这个方法没什么问题,加上那个try catch 就有一个错误解决不了
来源:3-4 项目作业
西封图南
2021-08-27 12:32:20
public float[] initScore() {
//提示语
System.out.println("请输入要存储的数学成绩数量:");
//创建Scanner类对象
Scanner sr =new Scanner(System.in);
//创建一个int类型变量,将其赋值为下次键盘输入的整数
for(int i=1;i<=1;i++){
try{int c=sr.nextInt();}
catch(java.util.InputMismatchException e){
System.out.println("输入的数据不是整数,请重新输入");
sr.next();
i--;}
}
//将键盘获取的整数赋值为存储数学成绩数组的长度,实现键盘获取数组长度。
float[] chengJi = new float[c];
//for循环从键盘获取数组元素
for(int a=0;a<chengJi.length;a++){
System.out.println("请输入第"+(a+1)+"个数学成绩:");
chengJi[a]=sr.nextFloat();
}
//返回数组初始化后的值
return chengJi;
}
1回答
好帮手慕小脸
2021-08-27
同学你好,上述贴出代码存在问题以及优化建议如下:
1、变量c并没有定义,所以如下这里会报红
建议同学变量并对此进行初始化,修改后代码如下:
2、代码书写比较复杂,这里获取数据长度之后,直接使用for循环获取数据即可,为避免录入非数字导致出现异常,可以使用try..catch来处理,且当输入错误时,只需重新录入数据
public float[] initScore() {
System.out.println("请输入要存储的数学成绩的数量");
int c=0;
//创建Scanner类对象
Scanner sr =new Scanner(System.in);
try {
c = sr.nextInt();
} catch (InputMismatchException e) {
System.out.println("不能输入非数字,只能输入数字");
}
//将键盘获取的整数赋值为存储数学成绩数组的长度,实现键盘获取数组长度。
float[] chengJi = new float[c];
//for循环从键盘获取数组元素
for (int i = 0; i < chengJi.length; i++) {
System.out.println("请输入第" + (i + 1) + "个数据");
try {
chengJi[i] = sr.nextFloat();
} catch (InputMismatchException e) {
System.out.println("不能输入非数字,只能输入整型数字或者带小数的数字");
sr.next();
i--;
continue;
}
}
return chengJi;
}
祝学习愉快~
相似问题