Java:如何减少无法合并的 if-else 语句的数量

标签 java if-statement switch-statement conditional-statements

虽然我的代码按照我想要的方式完美运行,但是我的代码中有很多 if-else 语句,所以我想问是否可以减少此代码中的 if-else 语句

if ( nightPost(timePicker1.getValue().toString(), timePicker4.getValue().toString()) ) {
    if ( !teToTime.isAfter(LocalTime.parse("08:30",format)) ) {
        textField4.setStyle("");
        if(getDifference(timeKA, timeKB)<121 && getDifference(timeKA, timeKB)>59) {
            timePicker3.setStyle("");
            if ( range(timePicker1.getValue().toString(), timePicker2.getValue().toString(),
                timePicker3.getValue().toString(), timePicker4.getValue().toString())) {
                timePicker2.setStyle("");
                timePicker3.setStyle("");
                if( increaseTxt.isBefore(LocalTime.parse("11:01",format)) )
                {
                    textField5.setStyle("");
                    return true;
                } else {
                    textField5.setStyle("-fx-border-color: red");
                    return false;
                }
            } else {
                timePicker2.setStyle("-fx-border-color: orange");
                return false;
            }                               
        }
        else {
            timePicker3.setStyle("-fx-border-color: red");
            return false;
        }
    } else {
        textField4.setStyle("-fx-border-color: red");
        return false;
    }
}
return false;

最佳答案

将嵌套条件替换为 Guard Clauses

if (!nightPost(timePicker1.getValue().toString(), timePicker4.getValue().toString()) ) {
    return false;
}
if ( teToTime.isAfter(LocalTime.parse("08:30",format)) ) {
    textField4.setStyle("-fx-border-color: red");
    return false;
}
textField4.setStyle("");
if ( !(getDifference(timeKA, timeKB) < 121 && getDifference(timeKA, timeKB) > 59) ) {
    timePicker3.setStyle("-fx-border-color: red");
    return false;
}
timePicker3.setStyle("");
if ( !range(timePicker1.getValue().toString(), timePicker2.getValue().toString(), 
            timePicker3.getValue().toString(), timePicker4.getValue().toString()) ) 
{
    timePicker2.setStyle("-fx-border-color: orange");
    return false;
}
timePicker2.setStyle("");
timePicker3.setStyle("");
if ( !increaseTxt.isBefore(LocalTime.parse("11:01",format)) ) {
    textField5.setStyle("-fx-border-color: red");
    return false;
}
textField5.setStyle("");
return true;

关于Java:如何减少无法合并的 if-else 语句的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44650115/

相关文章:

java - 用于多部分调用的 Jersey 客户端

java - 使用 .java 类编译多个 .jar 文件

java - URL 标识符的加密算法

c - c 中的 IF 或 boolean 语句

Java:变量增加错误?

javascript - 检查 jquery 中的 if else 条件

c++ - 嵌套循环中 goto 的替代方法?

Java转换字符串,具有毫秒至今的对象

c++ - 开关: break without a case

c - 函数数组在 if 和 switch 语句上的性能