Java Android应用程序中的If/Else验证?
我正在使用android studio为大学预科作业创建一个简单的应用程序 我已经能够开发大部分应用程序,但我需要以下功能的帮助: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声明,但我对这一切都是新手,似乎无法让它发挥作用 下面
- 确保输入了所有字段
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-2EditText
视图中的值。然后(2)您提到的将失败,因为您正在onCreate
中设置emptyEditText
布尔值。这是真的。我做了一个调整,但我想在这种情况下使用布尔值是多余的。在我看来,第一个是最好的建议,或者在另一个答案中使用TextUtils.isEmpty(Numet0-2.getText())。您的意思是Numet0.getText()==”
还是更好的TextUtils.isEmpty(Numet0.getText())
我的意思是Numet0.getText()==”。很抱歉混淆了。但是用户可能会更改Numet0-2EditText
视图中的值。然后(2)您提到的将失败,因为您正在onCreate
中设置emptyEditText
布尔值。这是真的。我做了一个调整,但我想在这种情况下使用布尔值是多余的。在我看来,第一个是最好的建议,或者在另一个答案中使用TextUtils.isEmpty(Numet0-2.getText())。当我点击计算按钮时,我的应用程序崩溃了。我用新代码更新了我的问题。我做错了什么吗?Nvm发现了错误位置的双变量。当我点击计算按钮时,我的应用程序崩溃了。我用新代码更新了我的问题。我做错了什么吗?Nvm发现了双变量他来错地方了