如何根据某些条件添加字符串消息

时间:2019-03-14 18:02:46

标签: java conditional println

我想根据年级分数打印一些文字:

  • 如果得分0(不包括)和100之间的有效范围内:则会显示Your Grade Is : <message><message>依赖于得分子范围。
  • 如果得分大于100或小于等于0:我要打印Enter Valid Number

注意: 我不想在代码:D

中重复文本Your Grade Is

到目前为止我尝试过的事情

double score = 16;
    String grade = (score <= 100 && score >= 85) ? "Excellent"
            : (score >= 75 && score < 85) ? "Very Good"
                    : (score >= 65 && score < 75) ? "Good"
                            : (score >= 50 && score < 65) ? "pass"
                                    : (score > 0 && score < 50) ? "Fail" : "Enter Valid Number !";
    System.out.println(">>>"+grade);

2 个答案:

答案 0 :(得分:0)

使用if的条件逻辑

如果条件数量较少,则应使用if语句。它们使您的代码可读。另外,可以通过更改某些行来轻松修改某些条件/逻辑(因为它们不像三元运算符那样被链接)。

使用三元运算符

的条件逻辑

仅当您可以将三元表达式result = (value != null) ? value : default)放在一行中并且不影响可读性(例如,分配默认值)时,才建议使用它。

解决方案

public static String buildMessageForScore(double score) {
    if (score > 0 && score <= 100) {
        String message = "Your Grade Is: ";
        if (score < 50) return message + "Failed";
        if (score < 65) return message + "Passed";
        if (score < 75) return message + "Good";
        if (score < 85) return message + "Very Good";
        if (score <= 100) return message + "Excellent";
    }
    return "Enter Valid Number!";
}

解释

  1. 分数翻译将您的逻辑转化为一种方法。因此,您可以命名并轻松地测试。另一个好处是,如果参数 score 无效,您也可能抛出IllegalArgumentException
  2. 前几条语句通常检查参数值是否有效。第一个if也会验证分数是否在范围内。
  3. 最后一个语句应返回一些默认值。因此,您的错误消息是此处的默认设置。
  4. (外部if块之间)具有短路中断的有序控制流之间。 订购,等级从低到高。如果等级低于某个阈值,它将立即return相关消息并离开方法(短路)。由于在每个条件之后都直接使用return,因此您可以省略通常的if .. else样式(与break中的switch .. case相同)。由于每个条件都在同一行中,因此其可读性更高(哪个得分限制属于哪个消息)。

答案 1 :(得分:-1)

尝试一下:

   String grade = score > 100 || score < 0 ? "Enter Valid Number !" :
"Your Grade Is" + ((score <= 100 && score >= 85) ? "Excellent"
            : (score >= 75 && score < 85) ? "Very Good"
                    : (score >= 65 && score < 75) ? "Good"
                            : (score >= 50 && score < 65) ? "pass"
                                    : (score > 0 && score < 50) ? "Fail");
    System.out.println(">>>"+grade);