如何在开关中检查以下条件而不是if?

时间:2015-02-09 11:40:08

标签: java android

如何在switch中检查以下条件而不是if?

我想在切换案例中检查这个条件。

if(tvStartLocation.getText().toString().equalsIgnoreCase(""))
{
    Toast.makeText(getActivity(),"Please enter start location", Toast.LENGTH_SHORT).show();
}
else if(tvEndLocation.getText().toString().equalsIgnoreCase(""))
{
    Toast.makeText(getActivity(),"Please enter end location", Toast.LENGTH_SHORT).show();
}
else if(etStartOdometer.getText().toString().equalsIgnoreCase(""))
{
    Toast.makeText(getActivity(),"Please enter Trip Start Odometer reading", Toast.LENGTH_SHORT).show();
}
else if(etEndOdometer.getText().toString().equalsIgnoreCase(""))
{
    Toast.makeText(getActivity(),"Please enter Trip End Odometer reading", Toast.LENGTH_SHORT).show();
}
else if((compareOdometerReading(etStartOdometer.getText().toString(),etEndOdometer.getText().toString())) == -1)
{
    Toast.makeText(getActivity(),"End Odometer reading should be greater than Start Odometer Reading (eOR > sOR)!", Toast.LENGTH_SHORT).show();
}
else if(etManifest.getText().toString().equalsIgnoreCase(""))
{
    Toast.makeText(getActivity(),"Please enter Manifest", Toast.LENGTH_SHORT).show();
}
else if(etShipper.getText().toString().equalsIgnoreCase(""))
{
    Toast.makeText(getActivity(),"Please enter Shipper", Toast.LENGTH_SHORT).show();
}
else if(etCommodity.getText().toString().equalsIgnoreCase(""))
{
    Toast.makeText(getActivity(),"Please enter Commodity", Toast.LENGTH_SHORT).show();
}

建议我提前了

3 个答案:

答案 0 :(得分:2)

在switch语句中,您将一个变量与不同的常量值进行比较。您想要将不同的变量与一个常量值进行比较。 这是不可能的,恕我直言,在你的情况下是没有意义的。

答案 1 :(得分:0)

正如其他人所提到的,你正在将多个变量与一个常数进行比较,而切换不能这样做。但是,您可以通过将所有这些变量放在数组或列表中然后迭代它们来提高代码重用和可读性。例如:

TextView[] toValidate = new TextView[]{tvStartLocation, tvEndLocation, etStartOdometer}; //etc

for(TextView tv : toValidate){
     if(tv.getText().toString().equalsIgnoreCase(""))
     {
          //Display message.. 
     }
}

答案 2 :(得分:0)

您不能用switch语句替换它们,因为每个条件都会检查一个不同的变量。您可以用方法替换它们,以避免代码重复。

public boolean testControl (EditText control, String name) { // I'm assuming your control is an EditText 
                                              // (perhaps I got the type wrong)
    if (control.getText().toString().equalsIgnoreCase("")) {
        Toast.makeText(getActivity(),"Please enter " + name, Toast.LENGTH_SHORT).show();
        return false;
    }
    return true;
}

您可以调用方法:

boolean hasValue = testControl (etShipper, "Shipper");

然后,如果将EditText控件存储在某个数组/集合中,则可以循环调用此方法。