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,请问怎么解决 展开
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,请问怎么解决 展开
1个回答
展开全部
我认为你提取出来成method完全没必要。
提取成method是有重用的需求,并且代码量比较大的时候才会抽取成method。
但是你这仅仅是一个判断,代码量不大,而且在别的地方不一定能用到。
如果你一定要抽取成method的话,那么将
determineTest(int exam)
改成
determineTest(int exam,Scanner console)即可。将Scanner对象当作参数传进去。
提取成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类型的数字,代码量本来就不大,而且没有能重用的部分,所以没有必要抽取成方法。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询