Java 保持分数的程序中的if/else语句
我正试图重新分发我的代码,它根据我分配给变量的值打印出一条消息。我想重新定位你的分数是+分数部分,但我不知道如何重新定位,因为分数取决于我分配给它的值,它取决于总分。见下文 注意:从两个部分中去掉yourscore is+score部分并将其放在末尾是不起作用的,因为我希望它放在另一个部分之前,这也取决于变量。我会解释我的意思 输出的格式必须为: 你的分数就是分数 另一条基于分数的消息Java 保持分数的程序中的if/else语句,java,if-statement,refactoring,Java,If Statement,Refactoring,我正试图重新分发我的代码,它根据我分配给变量的值打印出一条消息。我想重新定位你的分数是+分数部分,但我不知道如何重新定位,因为分数取决于我分配给它的值,它取决于总分。见下文 注意:从两个部分中去掉yourscore is+score部分并将其放在末尾是不起作用的,因为我希望它放在另一个部分之前,这也取决于变量。我会解释我的意思 输出的格式必须为: 你的分数就是分数 另一条基于分数的消息 只需将类似部分包装到函数中: void printMessage(int value) { Syste
只需将类似部分包装到函数中:
void printMessage(int value) {
System.out.println("Your score is " + score);
}
然后像这样使用它:
int score;
if (total >= 50) {
score = 100;
printMessage(score);
} else if (total >= 0) {
score = 0;
printMessage(score);
}
或者,更好的是:
int score;
if (total >= 50) {
score = 100
} else if (total >= 0) {
score = 0;
}
printMessage(score);
编辑:
移出iftotal>=0并生成一个字符串以在末尾打印:
int score;
String msg;
if(total >= 0) {
if (total >= 50) {
score = 100;
msg = "Good job";
} else {
score = 0;
msg = "Play again?";
}
System.out.printf("Your score is %d\n%s", score, msg);
}
您可以在if/else语句之后打印分数
System.out.print("Your score is ");
if (total >= 50) {
score = 100;
System.out.print(score);
...
} else if (total >= 0) {
score = 0;
System.out.print(score);
...
}
编辑:我重新定位了你的分数是一部分,但它没有做任何事情来简化代码。我很确定你的代码是正确的,但这是另一种方法。你可以调用两个不同的方法。一个将返回给定总数的分数,另一个将返回消息
private void myMethod() {
...
System.out.println("Your score is " + getScore(total));
System.out.println(getMessage(total));
...
}
private String getScore(int total) {
return total >= 50 ? 100 : total >= 0 ? 0 : -1;
}
private String getMessage(int total) {
return total >= 50 ? "Good job" : total >= 0 ? "Play again?" : "";
}
你的问题我不清楚。你所说的因子是什么意思?请看我刚才所做的编辑。此外,我正试图将这些函数保留在一个方法中,而不是创建一个新的方法。谢谢你的建议。@julianhill:当你进行重构时,你将引入新的方法。这似乎是实现您所寻找的目标的合适方法,除非您能够明确指出,除了有一种打印分数的通用方法之外,您还需要完成一些事情。@user8816734试图将所有内容都推到一种方法中是一种糟糕的方法。在您开始复制代码的那一刻,创建一个新方法通常就是答案。仔细想想你的限制。@user8816734另外,你能详细说明你的编辑吗?我不确定我是否理解你的意思。有关更多信息,请参阅我刚才所做的编辑。我意识到我最初的问题不够清楚。我很想知道,既然我已经更改了,你还可以给我什么样的反馈。更多信息,请查看我刚才所做的编辑。我意识到我最初的问题不够清楚。我很想看看,既然我已经改变了,你还能给我什么额外的反馈。否则,您的代码将起作用,这正是我最初的想法。谢谢
private void myMethod() {
...
System.out.println("Your score is " + getScore(total));
System.out.println(getMessage(total));
...
}
private String getScore(int total) {
return total >= 50 ? 100 : total >= 0 ? 0 : -1;
}
private String getMessage(int total) {
return total >= 50 ? "Good job" : total >= 0 ? "Play again?" : "";
}