能帮我为我的代码找到解决方案吗?我正在制作一个新的Android应用,需要在其中进行一些计算,并且情况如下:
有四个要计算的字段。必须保留两个EditText(十进制数字)字段,而另两个是可选字段,但是,如果填充了可选字段,则需要在计算中使用它,否则将仅使用必需字段。
现在,我完全可以计算必填字段,但是当我尝试一些if-else子句以在计算中包括可选字段时,应用程序就变成了香蕉。 我不确定应该在哪里做这个两步选择,如果我应该使用布尔值来检查选项字段条件,或者我只是继续使用if-else ... 问题不在于calculatin本身,而是有两种代码遵循方式:一种是在未插入其他内容的情况下仅使用必填字段,另一种是使用所有四个字段。
谢谢大家!
下面的代码仅使用两个必填字段。
public void calcularResultado(View view) {
//check for blank values in obligatory fields
if (editGasolina.length() == 0) {
editGasolina.setError("Insira o valor");
}
if (editEtanol.length() == 0) {
editEtanol.setError("Insira o valor");
//runs the code
} else {
double valorGasolina = Double.parseDouble(editGasolina.getText().toString());
double valorEtanol = Double.parseDouble(editEtanol.getText().toString());
double valorResultado = valorEtanol / valorGasolina;
double porcentagem = (valorResultado) * 100;
String valorResultadoTexto = Double.toString(porcentagem);
valorResultadoTexto = String.format("%.2f", porcentagem);
if (valorResultado >= 0.7) {
textResultado.setText("GASOLINA");
textRendimento.setText(valorResultadoTexto + "%");
} else {
textResultado.setText("ETANOL");
textRendimento.setText(valorResultadoTexto + "%");
}
答案 0 :(得分:0)
您几乎明白了。现在发生的情况是,由于您具有if-if-else
构造,因此它认为第一个if
语句与下面的if-else
块是分开的。也就是说,如果editEtanol.length() == 0
的计算结果为false,即使else
的计算结果为editGasolina.length() == 0
,也会执行下面的true
块。
将行if (editEtanol.length() == 0) {
更改为else if (editEtanol.length() == 0) {
应该已经很有帮助。希望有帮助!
答案 1 :(得分:0)
public void calcularResultado(View view) {
//check for blank values in obligatory fields
if (editGasolina.length() == 0) {
editGasolina.setError("Insira o valor");
}
if (editEtanol.length() == 0) {
editEtanol.setError("Insira o valor");
//runs the code
} else {
double valorGasolina = Double.parseDouble(editGasolina.getText().toString());
double valorEtanol = Double.parseDouble(editEtanol.getText().toString());
boolean optionalField1Used = optionalEditText1.length() != 0;
boolean optionalField2Used = optionalEditText2.length() != 0;
double valorResultado = 0;
if (!optionalField1Used && !optionalField2Used) {
valorResultado = valorEtanol / valorGasolina;
} else if (optionalField1Used && !optionalField2Used) {
valorResultado = //some other calculation
} else if (!optionalField1Used && optionalField2Used) {
valorResultado = //yet another calculation
} else {
valorResultado = //calculation if both optional fields used
}
double porcentagem = (valorResultado) * 100;
String valorResultadoTexto = Double.toString(porcentagem);
valorResultadoTexto = String.format("%.2f", porcentagem);
if (valorResultado >= 0.7) {
textResultado.setText("GASOLINA");
textRendimento.setText(valorResultadoTexto + "%");
} else {
textResultado.setText("ETANOL");
textRendimento.setText(valorResultadoTexto + "%");
}
答案 2 :(得分:0)
让我们假设可选字段称为edit1
和edit2
。我还假设为了使用替代计算,必须同时存在两个可选值。
为了提高代码的清晰度,我将定义两个布尔变量,以明确指示强制字段和可选字段是否具有值。类似于以下内容。
public void calcularResultado(View view) {
var mandatoryValues = true;
var optionalValues = false;
if (editGasolina.length() == 0 {
editGasolina.setError("Insira o valor");
mandatoryValues = false;
}
if (editEtanol.length() == 0 {
editEtanol.setError("Insira o valor");
mandatoryValues = false;
}
if (edit1.length() > 0 && edit2.length() > 0) {
optionalValues = true;
}
if (mandatoryValues) {
if (optionalValues) {
// do alternative computation
} else {
// do computation for mandatory values only
}
}
}
请注意,如果没有一个强制性值,则不会执行任何计算。
希望有帮助-卡洛斯(Carlos)