请问题目中“修改指定位置处成绩的方法“给的示例方法类型,参数如果去掉两个是不是会更好一些?
来源:3-4 项目作业
Kumal
2021-08-29 18:11:16
老师好!
题目中,修改指定位置处成绩的方法类型,给的是有参带返(3个参数)的:
public void update(float[] f, int index, float newScore) { }
但是这样会导致主方法中case 4代码量非常多,因为这样主方法中既要接收index和newScore两个键盘数值,又要对这两个数值做各种判断(比如index不能为非数字,且index>=0&&index<a.length)(newScore不能为非数字,且newScore>0)。代码如下截图:
所以我在想说,假如题目中关于给出的方法类型,把index和newScore这两个参数去掉的话:
public void update(float[] f) { }
在update方法中再去接收index和newScore数值,
那么主方法的case 4部分将会变得简洁很多对吧?
我的理解对吗?
相关代码:
case 4:
int index=0;
float newScore=0;
if(a!=null) {
System.out.println("修改前:"+'\n'+"成绩为:");
for(float n:a){
System.out.print(n+" ");
}
System.out.println();
//接收修改位置
System.out.println("请输入要修改数据的位置(从0开始):");
while(true) {
try {
index=sc.nextInt();
}catch(InputMismatchException e) {
System.out.println("不能输入非数字!请重新输入:");
sc.next();
continue;
}
if(index>=0&&index<a.length) {
break;
}else {
System.out.println("输入的位置超出范围,请重新输入:");
continue;
}
}
//接收新数据
System.out.println("请输入新数据");
while(true) {
try {
newScore=sc.nextFloat();
}catch(InputMismatchException e) {
System.out.println("不能输入非数字!请重新输入:");
sc.next();
continue;
}
if(newScore>=0) {
break;
}else {
System.out.println("输入的分数不能为负数,请重新输入:");
continue;
}
}
//调用update方法
sm.update(a, index, newScore);
System.out.println("修改后:"+'\n'+"成绩为:");
for(float n:a){
System.out.print(n+" ");
}
System.out.println();
}else {
System.out.println("还未初始化数学成绩,请重新选择操作!");
}
break;
1回答
同学你好,实现思路有很多种,而同学实现思路是正确的,可以去除两个参数在update()方法中进行键盘输入获取修改位置与修改的数据,从而减少在主方法中的代码。
不过批复作业的老师会根据作业的要求进行批复,所以建议同学按照作业提供的方法进行创建。同学想要优化的代码或按照自己的思路创建方法也是可以的,需要同学在作业中添加一个文档,描述清楚同学修改的地方,便于批复作业的老师进行查看。
祝学习愉快!
相似问题