Java 将If-Then-Else语句转换为If-Then语句

Java 将If-Then-Else语句转换为If-Then语句,java,if-statement,Java,If Statement,有人知道如何将这个if-then-else语句转换为if-then语句吗?这太令人困惑了。在哪里放置else部分,并确保结构与if-then-else语句相同?谢谢你的帮助 if ((symptom1.equalsIgnoreCase("Yes"))) //fever 3 to 14 days { weight = 0.75; //cf if ((symptom2.equalsIgnoreCase("Yes

有人知道如何将这个if-then-else语句转换为if-then语句吗?这太令人困惑了。在哪里放置else部分,并确保结构与if-then-else语句相同?谢谢你的帮助

if ((symptom1.equalsIgnoreCase("Yes"))) //fever 3 to 14 days
            {
                weight = 0.75; //cf

                if ((symptom2.equalsIgnoreCase("Yes"))) //rash on any part of the body
                {
                    weight = 0.55; //cf

                    if ((symptom3.equalsIgnoreCase("Yes"))) //muscle pain
                    {
                        weight = 0.45; //cf


                        if ((symptom4.equalsIgnoreCase("Yes"))) //low blood pressure
                        {
                            weight = 0.38; //cf

                            if ((symptom5.equalsIgnoreCase("Yes"))) //bleeding gum
                            {
                                weight = 0.48; //cf

                                if ((symptom6.equalsIgnoreCase("Yes"))) //bloody feces
                                {
                                    weight = 0.35; //cf

                                    //severe
                                    newWeight = 0.7 * 0.35; //cf for disease = 0.7 [min=0.35]

                                    String cf = Double.toString(newWeight);

                                    Intent intent = new Intent(resultDengue1.this, resultSevereDengue.class);
                                    intent.putExtra("cfDisease", cf);
                                    startActivity(intent);
                                }
                                else //consult doctor
                                {
                                    weight = 0.3; //cf min
                                    newWeight = 0 * 0.3; //cf for disease = 0

                                    String cf = Double.toString(newWeight);

                                    Intent intent = new Intent(resultDengue1.this, consultDoctor.class);
                                    intent.putExtra("cfDisease", cf);
                                    startActivity(intent);
                                }
                            }
                            //consultDoctor
                            else
                            {
                                weight = 0.3; //cf min
                                newWeight = 0 * 0.3; //cf for disease = 0

                                String cf = Double.toString(newWeight);

                                Intent intent = new Intent(resultDengue1.this, consultDoctor.class);
                                intent.putExtra("cfDisease", cf);
                                startActivity(intent);
                            }
                        }
                        //uncomplicated
                        else
                        {
                            newWeight = 0.6 * 0.3; //cf for disease = 0.6 [min=0.3]

                            String cf = Double.toString(newWeight);

                            Intent intent = new Intent(resultDengue1.this, resultUncomplicatedDengue.class);
                            intent.putExtra("cfDisease", cf);
                            startActivity(intent);
                        }
                    }
                    //consultDoctor
                    else
                    {
                        weight = 0.3; //cf min
                        newWeight = 0 * 0.3; //cf for disease = 0

                        String cf = Double.toString(newWeight);

                        Intent intent = new Intent(resultDengue1.this, consultDoctor.class);
                        intent.putExtra("cfDisease", cf);
                        startActivity(intent);
                    }
                }
                //consultDoctor
                else
                {
                    weight = 0.3; //cf min
                    newWeight = 0 * 0.3; //cf for disease = 0

                    String cf = Double.toString(newWeight);

                    Intent intent = new Intent(resultDengue1.this, consultDoctor.class);
                    intent.putExtra("cfDisease", cf);
                    startActivity(intent);
                }
            }
            //absent dengue
            else if ((symptom1.equalsIgnoreCase("No"))) //fever 1 to 3 days
            {
                weight = 0.7; //cf

                if ((symptom2.equalsIgnoreCase("No"))) //rash on any part of the body
                {
                    weight = 0.5; //cf

                    if ((symptom3.equalsIgnoreCase("No"))) //muscle pain
                    {
                        weight = 0.4; //cf

                        if ((symptom4.equalsIgnoreCase("No"))) //low blood pressure
                        {
                            weight = 0.3; //cf

                            if ((symptom5.equalsIgnoreCase("No"))) //bleeding gum
                            {
                                weight = 0.4; //cf

                                if ((symptom6.equalsIgnoreCase("No"))) //bloody feces
                                {
                                    weight = 0.35; //cf

                                    //absent
                                    newWeight = 0.8 * 0.3; //cf for disease = 0.8 [min=0.3]

                                    String cf = Double.toString(newWeight);

                                    Intent intent = new Intent(resultDengue1.this, resultAbsentDengue.class);
                                    intent.putExtra("cfDisease", cf);
                                    startActivity(intent);
                                }
                                else //consultDoctor
                                {
                                    weight = 0.3; //cf min
                                    newWeight = 0 * 0.3; //cf for disease = 0

                                    String cf = Double.toString(newWeight);

                                    Intent intent = new Intent(resultDengue1.this, consultDoctor.class);
                                    intent.putExtra("cfDisease", cf);
                                    startActivity(intent);
                                }
                            }
                            else //consultDoctor
                            {
                                weight = 0.3; //cf min
                                newWeight = 0 * 0.3; //cf for disease = 0

                                String cf = Double.toString(newWeight);

                                Intent intent = new Intent(resultDengue1.this, consultDoctor.class);
                                intent.putExtra("cfDisease", cf);
                                startActivity(intent);
                            }
                        }
                        else //consultDoctor
                        {
                            weight = 0.3; //cf min
                            newWeight = 0 * 0.3; //cf for disease = 0

                            String cf = Double.toString(newWeight);

                            Intent intent = new Intent(resultDengue1.this, consultDoctor.class);
                            intent.putExtra("cfDisease", cf);
                            startActivity(intent);
                        }
                    }
                    else //consultDoctor
                    {
                        weight = 0.3; //cf min
                        newWeight = 0 * 0.3; //cf for disease = 0

                        String cf = Double.toString(newWeight);

                        Intent intent = new Intent(resultDengue1.this, consultDoctor.class);
                        intent.putExtra("cfDisease", cf);
                        startActivity(intent);
                    }
                }
                //consultDoctor
                else
                {
                    weight = 0.3; //cf min
                    newWeight = 0 * 0.3; //cf for disease = 0

                    String cf = Double.toString(newWeight);

                    Intent intent = new Intent(resultDengue1.this, consultDoctor.class);
                    intent.putExtra("cfDisease", cf);
                    startActivity(intent);
                }
            }

你应该带上任何像样的IDE,自己做这项工作。以下是一些提示:

1) 查找重复的代码块,例如

String cf = Double.toString(newWeight);

Intent intent = new Intent(resultDengue1.this, consultDoctor.class);
intent.putExtra("cfDisease", cf);
startActivity(intent);
并将它们移动到类似于
startcfdiseintent
的方法

2) 删除注释,并将其替换为自描述代码:

symptom1.equalsIgnoreCase("Yes"))) //fever 3 to 14 days
应该提取到局部变量

boolean isFeverMoreThanTwoDays = symptom1.equalsIgnoreCase("Yes");
然后重新使用

您仍然可以留下注释,但在
布尔值附近

此外,您可以组合新布尔值来创建新的自减布尔值,如:

boolean patientHasExtremelyDangerousInfection = isFever... && isMusclePainPresent && isGumBleeding && ...; 
然后用它们来做决定

3) 查找不必要的代码:

在下半部分,其中
症状1.equalsIgnoreCase(“No”)
所有else块都是相同的,因此您可以使用
&&
将所有检查折叠为一个,并删除整个
if then else

在前半部分:MyIDE显示几乎所有对
weight=…;//的调用cf
会被进一步覆盖,而不会在其间被读取,因此那里有很多冗余行-使它们有用,或者删除它们


4) 如有必要,创建一个测试。您的代码使用7个变量,这些变量可以是“是”或“否”。这就产生了2^7个输入变量,这是一个很小的数字。您可以轻松创建一个程序来执行所有这些变化,使用生成的
cf
并将数据放入某个文件中。之后,在该文件的帮助下,您可以确保新代码实际上按照旧的逻辑工作。

您应该使用任何合适的IDE,并自己完成这项工作。以下是一些提示:

1) 查找重复的代码块,例如

String cf = Double.toString(newWeight);

Intent intent = new Intent(resultDengue1.this, consultDoctor.class);
intent.putExtra("cfDisease", cf);
startActivity(intent);
并将它们移动到类似于
startcfdiseintent
的方法

2) 删除注释,并将其替换为自描述代码:

symptom1.equalsIgnoreCase("Yes"))) //fever 3 to 14 days
应该提取到局部变量

boolean isFeverMoreThanTwoDays = symptom1.equalsIgnoreCase("Yes");
然后重新使用

您仍然可以留下注释,但在
布尔值附近

此外,您可以组合新布尔值来创建新的自减布尔值,如:

boolean patientHasExtremelyDangerousInfection = isFever... && isMusclePainPresent && isGumBleeding && ...; 
然后用它们来做决定

3) 查找不必要的代码:

在下半部分,其中
症状1.equalsIgnoreCase(“No”)
所有else块都是相同的,因此您可以使用
&&
将所有检查折叠为一个,并删除整个
if then else

在前半部分:MyIDE显示几乎所有对
weight=…;//的调用cf
会被进一步覆盖,而不会在其间被读取,因此那里有很多冗余行-使它们有用,或者删除它们


4) 如有必要,创建一个测试。您的代码使用7个变量,这些变量可以是“是”或“否”。这就产生了2^7个输入变量,这是一个很小的数字。您可以轻松创建一个程序来执行所有这些变化,使用生成的
cf
并将数据放入某个文件中。之后,在该文件的帮助下,您可以确保新代码实际上按照旧的逻辑工作。

我假设sympln的值必须是“Yes”或“No”


我假设symphonn的值必须是“是”或“否”


您是否尝试过使用IDE重构代码?如何将这堆乱七八糟的代码缩短到20行是非常简单的。这将是
stringcf=…
startActivity(intent)
,传入要使用的
newWeight
.class
。然后,除非在
if
语句之后需要,否则应消除
weight
newWeight
变量,并直接指定为参数。为什么?这个奇怪请求的动机是什么?@EJP我猜是因为OP意识到它像****一样丑陋。绝对不是。非常笨拙。如果我能使用其他方法,应该很容易。我想将此语句转换为IF-THEN语句,只是为了实现基于规则的技术。如果我没有弄错的话,基于规则的技术只使用If-THEN语句。您是否尝试过使用IDE重构代码?如何将这堆乱七八糟的代码缩短到20行是非常简单的。这将是
stringcf=…
startActivity(intent)
,传入要使用的
newWeight
.class
。然后,除非在
if
语句之后需要,否则应消除
weight
newWeight
变量,并直接指定为参数。为什么?这个奇怪请求的动机是什么?@EJP我猜是因为OP意识到它像****一样丑陋。绝对不是。非常笨拙。如果我能使用其他方法,应该很容易。我想将此语句转换为IF-THEN语句,只是为了实现基于规则的技术。如果我没有弄错的话,基于规则的技术只使用If-THEN语句。