Java 将If-Then-Else语句转换为If-Then语句
有人知道如何将这个if-then-else语句转换为if-then语句吗?这太令人困惑了。在哪里放置else部分,并确保结构与if-then-else语句相同?谢谢你的帮助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 ((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语句。