Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我得到;“无效”;结果即使输入有效,有人知道为什么吗?_Java_Calculator - Fatal编程技术网

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("-"))