请问题目中“修改指定位置处成绩的方法“给的示例方法类型,参数如果去掉两个是不是会更好一些?

来源:3-4 项目作业

Kumal

2021-08-29 18:11:16

http://img.mukewang.com/climg/612b59b709e1d8f811530620.jpg

老师好!


题目中,修改指定位置处成绩的方法类型,给的是有参带返(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部分将会变得简洁很多对吧?

我的理解对吗?


http://img.mukewang.com/climg/612b5b340954aca406510766.jpg

http://img.mukewang.com/climg/612b5b950966b31306540424.jpg

相关代码:

​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回答

好帮手慕小尤

2021-08-29

同学你好,实现思路有很多种,而同学实现思路是正确的,可以去除两个参数在update()方法中进行键盘输入获取修改位置与修改的数据,从而减少在主方法中的代码。

    ​不过批复作业的老师会根据作业的要求进行批复,所以建议同学按照作业提供的方法进行创建。同学想要优化的代码或按照自己的思路创建方法也是可以的,需要同学在作业中添加一个文档,描述清楚同学修改的地方,便于批复作业的老师进行查看。

祝学习愉快!

0
humal
hp>好的,谢谢老师,提交作业时我是有按照题目要求的那样三个参数去写case 4。

谢谢老师么么哒!

h021-08-29
共1条回复

0 学习 · 9886 问题

查看课程