老师,本来这个方法没什么问题,加上那个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();
        }

  http://img.mukewang.com/climg/61286ab80989f7d005720365.jpg​  //返回数组初始化后的值
        return chengJi;
    }

写回答

1回答

好帮手慕小脸

2021-08-27

同学你好,上述贴出代码存在问题以及优化建议如下:

1、变量c并没有定义,所以如下这里会报红

http://img.mukewang.com/climg/6128a025090a499c04140061.jpg

建议同学变量并对此进行初始化,修改后代码如下:

http://img.mukewang.com/climg/6128a1b7095a70ea02520032.jpg

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

祝学习愉快~

1

0 学习 · 9886 问题

查看课程