【问题标题】:Tidying Java code in Android Studio在 Android Studio 中整理 Java 代码
【发布时间】:2016-03-11 23:55:51
【问题描述】:
Button crossButton = (Button) findViewById(R.id.crossButton);
crossButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (!x1.getText().toString().equals("")) {
if (!x2.getText().toString().equals("")) {
if (!x3.getText().toString().equals("")) {
if (!y1.getText().toString().equals("")) {
if (!y2.getText().toString().equals("")) {
if (!y3.getText().toString().equals("")) {
double x1no = Double.parseDouble(x1.getText().toString());
double x2no = Double.parseDouble(x2.getText().toString());
double x3no = Double.parseDouble(x3.getText().toString());
double y1no = Double.parseDouble(y1.getText().toString());
double y2no = Double.parseDouble(y2.getText().toString());
double y3no = Double.parseDouble(y3.getText().toString());
double z1 = (x2no * y3no) - (x3no * y2no);
double z2 = (x3no * y1no) - (x1no * y3no);
double z3 = (x1no * y2no) - (x2no * y1no);
resultText.setText(getString(R.string.decimal_vector_output, z1, z2, z3));
} else { y3.setError("Needs value"); y3.requestFocus(); }
} else { y2.setError("Needs value"); y2.requestFocus(); }
} else { y1.setError("Needs value"); y1.requestFocus(); }
} else { x3.setError("Needs value"); x3.requestFocus(); }
} else { x2.setError("Needs value"); x2.requestFocus(); }
} else { x1.setError("Needs value"); x1.requestFocus(); }
}
});
我将如何清理这些 if 语句之类的?
我尝试了几个 OR 条件,但似乎都失败了。
希望得到帮助。
【问题讨论】:
标签:
java
android
android-studio
【解决方案1】:
Button crossButton = (Button) findViewById(R.id.crossButton);
crossButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
double x1no = getDoubleValue(x1);
double x2no = getDoubleValue(x2);
double x3no = getDoubleValue(x3);
double y1no = getDoubleValue(y1);
double y2no = getDoubleValue(y2);
double y3no = getDoubleValue(y3);
double z1 = (x2no * y3no) - (x3no * y2no);
double z2 = (x3no * y1no) - (x1no * y3no);
double z3 = (x1no * y2no) - (x2no * y1no);
});
private Double getDoubleValue(double x){
if(!x.getText().toString().equals(""){
//if(x != null){
return Double.parseDouble(x.getText().toString());
}
else{
x.setError("Needs value");
x.requestFocus();
}
}
【解决方案2】:
您可以使用Alt+Enter 并在每个if 条件下选择Invert 'if' condition。结果看起来像 -
if (x1.getText().toString().equals("")) { x1.setError("Needs value"); x1.requestFocus(); } else {
if (x2.getText().toString().equals("")) { x2.setError("Needs value"); x2.requestFocus(); } else {
if (x3.getText().toString().equals("")) { x3.setError("Needs value"); x3.requestFocus(); } else {
if (y1.getText().toString().equals("")) { y1.setError("Needs value"); y1.requestFocus(); } else {
if (y2.getText().toString().equals("")) { y2.setError("Needs value"); y2.requestFocus(); } else {
if (y3.getText().toString().equals("")) { y3.setError("Needs value"); y3.requestFocus(); } else {
double x1no = Double.parseDouble(x1.getText().toString());
double x2no = Double.parseDouble(x2.getText().toString());
double x3no = Double.parseDouble(x3.getText().toString());
double y1no = Double.parseDouble(y1.getText().toString());
double y2no = Double.parseDouble(y2.getText().toString());
double y3no = Double.parseDouble(y3.getText().toString());
double z1 = (x2no * y3no) - (x3no * y2no);
double z2 = (x3no * y1no) - (x1no * y3no);
double z3 = (x1no * y2no) - (x2no * y1no);
resultText.setText(getString(R.string.decimal_vector_output, z1, z2, z3));
}
}
}
}
}
}
【解决方案3】:
要解决嵌套 if 并优化代码,您可以使用提前返回编码样式。
对于您的问题:
Button crossButton = (Button) findViewById(R.id.crossButton);
crossButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (x1.getText().toString().equals("")) {
x1.setError("Needs value"); x1.requestFocus();
return;
}
if (x2.getText().toString().equals("")) {
x2.setError("Needs value"); x2.requestFocus();
return;
}
if (x3.getText().toString().equals("")) {
x3.setError("Needs value"); x3.requestFocus();
return;
}
if (y1.getText().toString().equals("")) {
y1.setError("Needs value"); y1.requestFocus();
return;
}
if (y2.getText().toString().equals("")) {
y2.setError("Needs value"); y2.requestFocus();
return;
}
if (y3.getText().toString().equals("")) {
y3.setError("Needs value"); y3.requestFocus();
return;
}
double x1no = Double.parseDouble(x1.getText().toString());
double x2no = Double.parseDouble(x2.getText().toString());
double x3no = Double.parseDouble(x3.getText().toString());
double y1no = Double.parseDouble(y1.getText().toString());
double y2no = Double.parseDouble(y2.getText().toString());
double y3no = Double.parseDouble(y3.getText().toString());
double z1 = (x2no * y3no) - (x3no * y2no);
double z2 = (x3no * y1no) - (x1no * y3no);
double z3 = (x1no * y2no) - (x2no * y1no);
resultText.setText(getString(R.string.decimal_vector_output, z1, z2, z3));
});