Java 保持分数的程序中的if/else语句

Java 保持分数的程序中的if/else语句,java,if-statement,refactoring,Java,If Statement,Refactoring,我正试图重新分发我的代码,它根据我分配给变量的值打印出一条消息。我想重新定位你的分数是+分数部分,但我不知道如何重新定位,因为分数取决于我分配给它的值,它取决于总分。见下文 注意:从两个部分中去掉yourscore is+score部分并将其放在末尾是不起作用的,因为我希望它放在另一个部分之前,这也取决于变量。我会解释我的意思 输出的格式必须为: 你的分数就是分数 另一条基于分数的消息 只需将类似部分包装到函数中: void printMessage(int value) { Syste

我正试图重新分发我的代码,它根据我分配给变量的值打印出一条消息。我想重新定位你的分数是+分数部分,但我不知道如何重新定位,因为分数取决于我分配给它的值,它取决于总分。见下文

注意:从两个部分中去掉yourscore is+score部分并将其放在末尾是不起作用的,因为我希望它放在另一个部分之前,这也取决于变量。我会解释我的意思

输出的格式必须为:

你的分数就是分数

另一条基于分数的消息


只需将类似部分包装到函数中:

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?" : "";
}