Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.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 Android应用程序中的If/Else验证?_Java_Android_If Statement_Android Studio - Fatal编程技术网

Java Android应用程序中的If/Else验证?

Java Android应用程序中的If/Else验证?,java,android,if-statement,android-studio,Java,Android,If Statement,Android Studio,我正在使用android studio为大学预科作业创建一个简单的应用程序 我已经能够开发大部分应用程序,但我需要以下功能的帮助: 确保输入了所有字段 如果是(做数学计算) 如果否(不进行数学计算,弹出一个返回“缺少字段”的弹出窗口) 像这样 Toast.makeText(getApplicationContext(), "Missing Value", Toast.LENGTH_SHORT).show(); 我在考虑一个If/Else声明,但我对这一切都是新手,似乎无法让它发挥作用 下面

我正在使用android studio为大学预科作业创建一个简单的应用程序

我已经能够开发大部分应用程序,但我需要以下功能的帮助:

  • 确保输入了所有字段
如果是(做数学计算)

如果否(不进行数学计算,弹出一个返回“缺少字段”的弹出窗口)

像这样

Toast.makeText(getApplicationContext(), "Missing Value", Toast.LENGTH_SHORT).show();
我在考虑一个If/Else声明,但我对这一切都是新手,似乎无法让它发挥作用

下面是我所有的java代码,显示了数学函数等

    //Inside the OnCreate
    //Linking the Variables
    Numet0 = (EditText) findViewById(R.id.editText);
    Numet1 = (EditText) findViewById(R.id.editText2);
    Numet2 = (EditText) findViewById(R.id.editText3);
    b = (Button) findViewById(R.id.button);
    tv = (TextView) findViewById(R.id.textView2);

    //Creating Function On Button 1
    b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Double Num0 = Double.parseDouble(Numet0.getText().toString());
            Double Num1 = Double.parseDouble(Numet1.getText().toString());
            Double Num2 = Double.parseDouble(Numet2.getText().toString());
            //Result Output
            if(TextUtils.isEmpty(Numet0.getText()) ||TextUtils.isEmpty(Numet1.getText())|| TextUtils.isEmpty(Numet2.getText())) {
                Toast.makeText(getApplicationContext(), "Field Missing", Toast.LENGTH_SHORT).show();
            }
            else {
                result = ((Num0 - Num1) / Num2);
                tv.setText("Your monthly payment = €" + result);
                //Popup After Button Press
                Toast.makeText(getApplicationContext(), "Result Complete", Toast.LENGTH_SHORT).show();
            }
        }
    });
这是我在尝试上面的if/else语句时得到的错误

02-21 23:37:27.564 2310-2310/com.nci.caprep E/AndroidRuntime: FATAL EXCEPTION: main
                                                              Process: com.nci.caprep, PID: 2310
                                                              java.lang.NumberFormatException: Invalid double: ""
                                                                  at java.lang.StringToReal.invalidReal(StringToReal.java:63)
                                                                  at java.lang.StringToReal.parseDouble(StringToReal.java:267)
                                                                  at java.lang.Double.parseDouble(Double.java:301)
                                                                  at com.nci.caprep.MainActivity$2.onClick(MainActivity.java:68)
                                                                  at android.view.View.performClick(View.java:5198)
                                                                  at android.view.View$PerformClick.run(View.java:21147)
                                                                  at android.os.Handler.handleCallback(Handler.java:739)
                                                                  at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                  at android.os.Looper.loop(Looper.java:148)
                                                                  at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                  at java.lang.reflect.Method.invoke(Native Method)
                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

内部
public void onClick(视图v)
您可以检查

if(TextUtils.isEmpty(Numet0.getText()) ||TextUtils.isEmpty(Numet1.getText())||TextUtils.isEmpty(Numet2.getText())) {
    // show your Toast
    return;
}
// If above condition is not true
// use your parseDouble method to get Double value, because at this point you know that NumetX.getText().toString() won't throw NPE
// update your TextView or any other UI component (No need to show Toast of error here)

希望有帮助

内部
public void onClick(视图v)
您可以检查

if(TextUtils.isEmpty(Numet0.getText()) ||TextUtils.isEmpty(Numet1.getText())||TextUtils.isEmpty(Numet2.getText())) {
    // show your Toast
    return;
}
// If above condition is not true
// use your parseDouble method to get Double value, because at this point you know that NumetX.getText().toString() won't throw NPE
// update your TextView or any other UI component (No need to show Toast of error here)

希望有帮助

有两种方法可以做到这一点:

1.)如果其中一个EditText值等于空白字符串,则显示弹出窗口

if(Numet0.getText() == "" || Numet1.getText() == "" || Numet2.getText() == "") {
    //show message
}
else {
    //calculation
}
2.)事先检查该值,并使用布尔值跟踪其中一个EditText是否为空

boolean emptyEditText = false;
//onCreate
//inside onClick method
if(Numet0.getText() == "" || Numet1.getText() == "" || Numet2.getText() == "") {
    emptyEditText = true;
}
else {
    emptyEditText = false;
}
if(emptyEditText) {
    //show message
}
else {
    //calculate
}

有两种方法可以做到这一点:

1.)如果其中一个EditText值等于空白字符串,则显示弹出窗口

if(Numet0.getText() == "" || Numet1.getText() == "" || Numet2.getText() == "") {
    //show message
}
else {
    //calculation
}
2.)事先检查该值,并使用布尔值跟踪其中一个EditText是否为空

boolean emptyEditText = false;
//onCreate
//inside onClick method
if(Numet0.getText() == "" || Numet1.getText() == "" || Numet2.getText() == "") {
    emptyEditText = true;
}
else {
    emptyEditText = false;
}
if(emptyEditText) {
    //show message
}
else {
    //calculate
}


我们不明白,有什么问题/错误?为什么不起作用?发生了什么事?在解析之前,应该检查用户是否在EditText中输入了内容it@AndrewSeymour我已经更新了我尝试过的内容,以及当它崩溃时的错误日志app@Xoce我已经更新了,当它崩溃应用程序时,我尝试的内容和错误日志我们没有得到它,问题/错误是什么?为什么它不能工作?发生了什么事?在解析之前,应该检查用户是否在EditText中输入了内容it@AndrewSeymour我已经更新了我尝试过的内容,以及当它崩溃时的错误日志app@Xoce我已经用我尝试过的和应用程序崩溃时的错误日志进行了更新。你的意思是
Numet0.getText()==“
还是更好的
TextUtils.isEmpty(Numet0.getText())
我的意思是Numet0.getText()==“”。很抱歉造成混淆。但是用户可能会更改Numet0-2
EditText
视图中的值。然后(2)您提到的将失败,因为您正在
onCreate
中设置
emptyEditText
布尔值。这是真的。我做了一个调整,但我想在这种情况下使用布尔值是多余的。在我看来,第一个是最好的建议,或者在另一个答案中使用TextUtils.isEmpty(Numet0-2.getText())。您的意思是
Numet0.getText()==”
还是更好的
TextUtils.isEmpty(Numet0.getText())
我的意思是Numet0.getText()==”。很抱歉混淆了。但是用户可能会更改Numet0-2
EditText
视图中的值。然后(2)您提到的将失败,因为您正在
onCreate
中设置
emptyEditText
布尔值。这是真的。我做了一个调整,但我想在这种情况下使用布尔值是多余的。在我看来,第一个是最好的建议,或者在另一个答案中使用TextUtils.isEmpty(Numet0-2.getText())。当我点击计算按钮时,我的应用程序崩溃了。我用新代码更新了我的问题。我做错了什么吗?Nvm发现了错误位置的双变量。当我点击计算按钮时,我的应用程序崩溃了。我用新代码更新了我的问题。我做错了什么吗?Nvm发现了双变量他来错地方了