首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何根据某些条件添加字符串消息

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

Stack Overflow用户
提问于 2019-03-15 05:28:32
回答 2查看 0关注 0票数 0

我想根据成绩的分数打印一些文字:

  • 如果得分是在有效范围之间0(不包括)和100:它打印Your Grade Is : <message>。因此<message>是依赖于的得分子范围。
  • 如果得分大于100或等于或等于0:我想打印Enter Valid Number

注意: 我不想重复Your Grade Is代码中的文本:D

如下:

代码语言:javascript
复制
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);
EN

回答 2

Stack Overflow用户

发布于 2019-03-15 13:47:17

使用条件逻辑 if

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

使用三元运算符的条件逻辑

我建议只使用三元表达式result = (value != null) ? value : default),只要你可以将它放在一行中,并且可读性不受影响(例如,为了分配默认值)。

解答

代码语言:javascript
复制
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. 将您的逻辑放入方法中。所以你可以命名并轻松测试它。另一个好处是,IllegalArgumentException如果参数分数无效,您也可以抛出一个。
  2. 前几个语句通常会检查参数值是否有效。所以第一次if验证得分是否在范围内。
  3. 最后一个语句应该返回一些默认值。所以你的错误信息在这里是默认的。
  4. 在中间(外部if-block)有序的控制流与短路中断。从低级到高级订购。如果等级低于某个阈值,它会立即return显示相关消息并离开方法(短路)。因为return在每个条件之后直接你可以省略通常的if .. else样式(与breakin 相同switch .. case)。由于每个条件都在一行中,因此它的可读性更高(哪个分数限制属于哪个消息)。
票数 0
EN

Stack Overflow用户

发布于 2019-03-15 15:14:19

试试这个:

代码语言:javascript
复制
   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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档