Java 我得到;“无效”;结果即使输入有效,有人知道为什么吗?
当输入无效(空等)时,它会崩溃。有什么想法吗 我尝试了各种方法来重新安排代码,但我无法让它工作。 当引入有效输入时,应用程序工作正常Java 我得到;“无效”;结果即使输入有效,有人知道为什么吗?,java,calculator,Java,Calculator,当输入无效(空等)时,它会崩溃。有什么想法吗 我尝试了各种方法来重新安排代码,但我无法让它工作。 当引入有效输入时,应用程序工作正常 public class fourth extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContent
public class fourth extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fourth);
final Button calc = (Button) findViewById(R.id.calculeaza);
final EditText e1 = (EditText) findViewById(R.id.inaltime);
final EditText e2 = (EditText) findViewById(R.id.greutate);
final TextView t1 = (TextView) findViewById(R.id.rezultat);
calc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String text = e1.getText().toString();
String text2 = e2.getText().toString();
if (text == ( "," ) || text == ( "" ) || text == ( "-" ) || text2 == ( "," ) || text2 == ( "" ) || text2 == ( "-" ))
{
float num1 = Float.parseFloat(e1.getText().toString());
float num2 = Float.parseFloat(e2.getText().toString());
float sum = ( num2 / ( ( num1 * num1 ) / 10000 ) );
t1.setText(Float.toString(sum));
} else {
t1.setText("Invalid");
}
}
});
}
}
首先,您的字符串比较是错误的。您应该使用 因此:
您尚未指定所得到的错误。但是,我猜测错误发生在您将文本解析为浮点的行上。如果
文本
为,
,则这样做毫无意义。首先,要比较字符串,请使用等于而不是=
。然后,仅当字符串为空时,才尝试将其转换为浮点字符串、昏迷或减号。您希望它如何工作?提示:反转您的条件定义“输入”、“有效”、“无效”、“崩溃”…然后思考一些次要问题,例如为什么要调用string,toString()
。感谢大家的反馈,我显然不擅长编码,我还有很多东西要学。条件的逆转起了作用,也有一些输入错误,结果代码也错了-t1.setText(String.valueof(sum))工作得很好祝大家愉快!!!(鞠躬)很高兴听到它工作。你介意标记正确的答案吗?这可能有助于未来的谷歌搜索;)这是工作代码(BMI计算器)很高兴听到它工作!实际上,我建议稍微修改一下代码。如果解析的文本无效,则抛出NumberFormatException
。您可以将这两个解析放在一个try块中并捕获此异常。这在防止运行时异常方面更安全。
if (text.equals(",") || text.equals("") || text.equals("-") || text2.equals(",") || text2.equals("") || text2.equals("-"))