java新手,有关scanner和if,诚心请教!!! 10

publicstaticdoublegetEXAM(Scannerconsole){System.out.print("doyouhave1)SATscoresor2)A... public static double getEXAM(Scanner console) {
System.out.print("do you have 1) SAT scores or 2) ACT scores? ");
int exam = console.nextInt();
if (exam == 1) {
double sat = getSAT(console);
return sat;
} else {
double act = getACT(console);
return act;
}
}
此为我编写的程序中的一小部分,是根据用户的输入来判断按SAT还是ACT,判断后再由用户输入各学科成绩,计算成绩后把成绩返回,现在我想把判断这一部分从getEXAM(Scannet console)中拿出另成一个method,请问该怎么做
我自己是这样写的
public static double getEXAM(Scanner console) {
System.out.print("do you have 1) SAT scores or 2) ACT scores? ");
int exam = console.nextInt();
double examscore = determineTest(exam);
return examscore;
}
public static double determineTest(int exam) {
if (exam == 1) {
getSAT(console);
return satscore;
} else {
getACT(console);
return actscore;
}
}
但是这样写无法在determineTest(int exam)中使用console,请问怎么解决
展开
 我来答
百度网友485dc0f
2014-10-20 · TA获得超过860个赞
知道小有建树答主
回答量:381
采纳率:100%
帮助的人:326万
展开全部
我认为你提取出来成method完全没必要。
提取成method是有重用的需求,并且代码量比较大的时候才会抽取成method。
但是你这仅仅是一个判断,代码量不大,而且在别的地方不一定能用到。

如果你一定要抽取成method的话,那么将
determineTest(int exam)

改成
determineTest(int exam,Scanner console)即可。将Scanner对象当作参数传进去。
追问
谢谢,不过这样又无法return回去了……这是我们老师的要求,把每个method都变成最小的,这是我写的全部代码,运行是没问题的,就是那一块儿if我想着提出来可能更符合要求,我把代码发给你了
追答

代码如下:

   public static double getEXAM(Scanner console) {
      System.out.print("do you have 1) SAT scores or 2) ACT scores? ");
      int exam = console.nextInt();
      return determineTest(exam, console);
   }
      
   public static double determineTest(int exam,Scanner console) {
      if (exam == 1) {
         return getSAT(console);
      } else {
         return  getACT(console);
      }
   }

不过我认为你那个代码已经很简洁了,没有必要再拆了。

写方法要遵守的2个原则就是:一个方法只做一件事、代码量尽量控制在一个屏幕范围之内。

你的getEXAM方法里面的内容全部都只有一个目的,就是为了返回那个double类型的数字,代码量本来就不大,而且没有能重用的部分,所以没有必要抽取成方法。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式