我正在使用多个 else if 来使程序根据旋转器中当前选择的值执行某些操作,但我忍不住认为有一种更简洁的方法可以做到这一点。有什么建议吗?
if(spinnerinput.equals(spinnerinput2)) {
output.setText(input.getText());
}
else if(spinnerinput.equals("Base 2") && spinnerinput2.equals("Base 10")) {
String regex = "[0-1]+";
if (input.getText().toString().matches(regex)) {
output.setText(binaryToDecimal(input.getText().toString()));
} else {
Context context = getApplicationContext();
CharSequence text = "Invalid characters for a binary number!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
else if(spinnerinput.equals("Base 10") && spinnerinput2.equals("Base 2")) {
String regex = "[0-9]+";
if(input.getText().toString().matches(regex)) {
output.setText(decimalToBinary(input.getText().toString()));
} else {
Context context = getApplicationContext();
CharSequence text = "Invalid characters for a decimal number!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
最佳答案
您的 if-else
问题不大,但您可以将代码重构到最少。您的底部两个条件 block 仅在 CharSequence
文本中有所不同。为什么不将其转换为方法并再次使用相同的代码?
private void yourCurrentMethod() {
if(spinnerinput.equals(spinnerinput2)) {
output.setText(input.getText());
}
else if(spinnerinput.equals("Base 2") && spinnerinput2.equals("Base 10")) {
String regex = "[0-1]+";
boolean isBinary = true;
doSomething(isBinary, "Invalid characters for a binary number!");
}
else if(spinnerinput.equals("Base 10") && spinnerinput2.equals("Base 2")) {
String regex = "[0-9]+";
boolean isBinary = false;
doSomething(isBinary, "Invalid characters for a decimal number!");
}
}
private void doSomething(boolean isBinary, CharSequence text){
if(input.getText().toString().matches(regex)) {
if(isBinary){
output.setText(binaryToDecimal(input.getText().toString()));
} else {
output.setText(decimalToBinary(input.getText().toString()));
}
} else {
Context context = getApplicationContext();
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
关于java - 在这种情况下使用多个 else if 语句是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41090084/