程序中的if / else语句可以保持得分

时间:2017-10-23 01:04:55

标签: java if-statement refactoring

我正在尝试重新分发我的代码,该代码打印出一条依赖于我赋给变量的值的消息。我想重新定位“你的分数”+分数部分,但我不知道如何分数,因为分数取决于我指定的值,这取决于总分。见下文。

注意:从两个部分中取出“你的分数是”+分数“并将其放在最后部分是不行的,因为我希望它在另一部分之前也依赖于变量。我会解释我的意思。

输出格式必须为:

  

您的分数得分

     

基于分数的另一条消息

int score;
if (total >= 50) {
    score = 100;
    System.out.println("Your score is " + score);
    System.out.println("Good job");


} else if (total >= 0) {
    score = 0;
    System.out.println("Your score is " + score);
    System.out.println("Play again?");

}

4 个答案:

答案 0 :(得分:1)

将相似部分包装在函数中:

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);

或者,更好的是:

library(tidyverse)
library(stringr)
df <- tribble(
~number, ~clientID,         ~node1,
1 ,    23969, '1 Community Services',
2 ,    39199,      '1 Youth Justice',
3 ,    23595,      '1 Mental Health',
4 ,    15867, '1 Community Services',
5 ,    18295,            '3 Housing',
6 ,    18295,            '2 Housing',
7 ,    18295, '1 Community Services',
8 ,    18295,            '4 Housing',
9 ,    15253,            '1 Housing',
10,    27839, '1 Community Services')

df2 <- mutate(df, step=as.numeric(str_sub(node1, end=1))) %>%
  spread(step, node1, sep='_') %>%
  group_by(clientID) %>%
  summarise(step1 = sort(unique(step_1))[1],
            step2 = sort(unique(step_2))[1],
            step3 = sort(unique(step_3))[1],
            step4 = sort(unique(step_4))[1])

df3 <- bind_rows(select(df2,1,source=2,target=3),
            select(df2,1,source=3,target=4),
            select(df2,1,source=4,target=5)) %>%
  group_by(source, target) %>%
  summarise(clients=n())

答案 1 :(得分:0)

修改

移出你的if(总计&gt; = 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);
}

答案 2 :(得分:0)

您可以在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);
    ...
}

编辑:我重新定位了"Your score is"部分,但它没有做任何简化代码的事情。我很确定你的代码很好,但这是另一种方法。

答案 3 :(得分:0)

您可以调用两种不同的方法。一个人将返回给定总数的分数,另一个将返回消息。

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