Java 单击单选按钮时会使我的应用程序崩溃

Java 单击单选按钮时会使我的应用程序崩溃,java,android,radio-button,calculator,android-radiobutton,Java,Android,Radio Button,Calculator,Android Radiobutton,我正在Android Studio上创建一个简单的计算器应用程序,我遇到了一个我无法解决的问题。我的计算器使用两个单选按钮进行计算,并使用两个编辑文本字段从用户处获取数字。计算时一切正常,但当我运行程序并单击两个编辑文本字段中没有任何内容的单选按钮时,我的应用程序崩溃。此外,如果将编辑文本字段中的任意一个保留为空,然后单击单选按钮中的任意一个进行计算,则该字段也会崩溃。此外,我希望程序在出现这些实例时不执行任何操作,直到两个编辑文本字段中有数字进行正确计算。有人能解释一下我做错了什么,我需要做什

我正在Android Studio上创建一个简单的计算器应用程序,我遇到了一个我无法解决的问题。我的计算器使用两个单选按钮进行计算,并使用两个编辑文本字段从用户处获取数字。计算时一切正常,但当我运行程序并单击两个编辑文本字段中没有任何内容的单选按钮时,我的应用程序崩溃。此外,如果将编辑文本字段中的任意一个保留为空,然后单击单选按钮中的任意一个进行计算,则该字段也会崩溃。此外,我希望程序在出现这些实例时不执行任何操作,直到两个编辑文本字段中有数字进行正确计算。有人能解释一下我做错了什么,我需要做什么来解决这个问题。谢谢大家!

public类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
单击RadioButton上的公共无效(视图v){
//这将屏幕上的内容和代码之间的元素链接在一起
RadioGroup ButtonGroup=(RadioGroup)findViewById(R.id.ButtonGroup);
RadioButton discountOffButton=(RadioButton)findViewById(R.id.discountOffButton);
RadioButton按钮百分比=(RadioButton)findViewById(R.id.按钮百分比);
EditText originalAmtInput=(EditText)findViewById(R.id.originalAmtInput);
EditText percentageAmtInput=(EditText)findViewById(R.id.percentageAmtInput);
TextView totalAmt=(TextView)findViewById(R.id.totalAmt);
//计算初始化和公式
float amount=float.parseFloat(originalAmtInput.getText().toString());
float percentage=float.parseFloat(percentageAmtInput.getText().toString());
浮动小数=百分比/100;
浮动总额=金额*小数;
浮动折扣总额=金额-总额;
//错误检查变量
字符串amountInput=originalAmtInput.getText().toString();
字符串percentageInput=percentageAmtInput.getText().toString();
布尔discountChecked=ButtonGroup.getCheckedRadioButtonId()==discountOffButton.getId();
布尔percentageChecked=ButtonGroup.getCheckedRadioButtonId()==percentageOfButton.getId();
如果(折扣已检查&&!amountInput.isEmpty()&&&!percentageInput.isEmpty()){
totalAmt.setText(浮动toString(折扣总额));
totalAmt.setText(String.format($%.2f),折扣总额);
}
else if(percentageChecked&&!amountInput.isEmpty()&&&!percentageInput.isEmpty()){
totalAmt.setText(Float.toString(total));
totalAmt.setText(String.format(“%.2f”,total));
}
否则{
总金额设置文本(“”);
}
我的日志猫:

E/AndroidRuntime:致命异常:主
进程:com.example.michaelzheng.percentagecalculatorapp,PID:12575
java.lang.IllegalStateException:无法为android执行方法:onClick
在android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
在android.view.view.performClick上(view.java:4780)
在android.widget.CompoundButton.performClick(CompoundButton.java:120)中
在android.view.view$PerformClick.run(view.java:19866)
位于android.os.Handler.handleCallback(Handler.java:739)
位于android.os.Handler.dispatchMessage(Handler.java:95)
位于android.os.Looper.loop(Looper.java:135)
位于android.app.ActivityThread.main(ActivityThread.java:5254)
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
原因:java.lang.reflect.InvocationTargetException
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
在android.view.view.performClick上(view.java:4780)
在android.widget.CompoundButton.performClick(CompoundButton.java:120)中
在android.view.view$PerformClick.run(view.java:19866)
位于android.os.Handler.handleCallback(Handler.java:739)
位于android.os.Handler.dispatchMessage(Handler.java:95)
位于android.os.Looper.loop(Looper.java:135)
位于android.app.ActivityThread.main(ActivityThread.java:5254)
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
原因:java.lang.NumberFormatException:无效浮点:“”
位于java.lang.StringToReal.invalidReal(StringToReal.java:63)
位于java.lang.StringToReal.parseFloat(StringToReal.java:308)
位于java.lang.Float.parseFloat(Float.java:306)
点击com.example.michaelzheng.percentagecalculatorapp.MainActivity.onRadioButtonClicked(MainActivity.java:32)
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
在安德里
 //calculation initialization and formulas
float amount = Float.parseFloat(originalAmtInput.getText().toString());
float percentage =Float.parseFloat(percentageAmtInput.getText().toString());
 //calculation initializations and formulas  (note: ? = set to AND : = else set to)
    float amount = "".equals(originalAmtInput.getText().toString()) ? 0 : Float.parseFloat(originalAmtInput.getText().toString());
    float percentage = "".equals(percentageAmtInput.getText().toString()) ? 0 : Float.parseFloat(percentageAmtInput.getText().toString());