Я создаю приложение калькулятора Tip, где я принимаю входные данные от пользователей в терминах общей суммы. Я хочу добавить исключение в код, в котором он будет Toast сообщение, если Пользователь не вводит действительный номер. У меня есть три кнопки и для каждой кнопки созданы разные методы. Я вставить код ниже для одной из кнопок, т.е. 10% журналов наконечникCatch IOException для недопустимого ввода
private void CalculateTipListener(){
BtnTip10.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
double amount = Double.parseDouble(etTotalAmount.getText().toString());
double TipAmount=amount/10;
tvTipAmount.setText("Tip: $"+TipAmount);
} catch(IOException e){
e.printStackTrace();
}
}
});
ошибок дает мне ошибку NumberFormatException.
01-12 20:10:39.872: E/AndroidRuntime(3299): java.lang.NumberFormatException: Invalid double: "gagajgalk"
01-12 20:10:39.872: E/AndroidRuntime(3299): at java.lang.StringToReal.invalidReal(StringToReal.java:63)
01-12 20:10:39.872: E/AndroidRuntime(3299): at java.lang.StringToReal.parseDouble(StringToReal.java:269)
01-12 20:10:39.872: E/AndroidRuntime(3299): at java.lang.Double.parseDouble(Double.java:295)
01-12 20:10:39.872: E/AndroidRuntime(3299): at com.example.tipcalculator.TipCalculatorActivity$2.onClick(TipCalculatorActivity.java:47)
01-12 20:10:39.872: E/AndroidRuntime(3299): at android.view.View.performClick(View.java:4424)
01-12 20:10:39.872: E/AndroidRuntime(3299): at android.view.View$PerformClick.run(View.java:18383)
01-12 20:10:39.872: E/AndroidRuntime(3299): at android.os.Handler.handleCallback(Handler.java:733)
01-12 20:10:39.872: E/AndroidRuntime(3299): at android.os.Handler.dispatchMessage(Handler.java:95)
01-12 20:10:39.872: E/AndroidRuntime(3299): at android.os.Looper.loop(Looper.java:137)
01-12 20:10:39.872: E/AndroidRuntime(3299): at android.app.ActivityThread.main(ActivityThread.java:4998)
01-12 20:10:39.872: E/AndroidRuntime(3299): at java.lang.reflect.Method.invokeNative(Native Method)
01-12 20:10:39.872: E/AndroidRuntime(3299): at java.lang.reflect.Method.invoke(Method.java:515)
01-12 20:10:39.872: E/AndroidRuntime(3299): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
01-12 20:10:39.872: E/AndroidRuntime(3299): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
01-12 20:10:39.872: E/AndroidRuntime(3299): at dalvik.system.NativeStart.main(Native Method)
Может кто-нибудь, пожалуйста, дайте мне знать, как обрабатывать исключения в таком сценарии? Я пытался использовать метод Toast, но он не работает, поскольку я использовал анонимные классы в каждом методе/слушателе.
Спасибо.
/й
Почему метод Тоста не работает? – panini
'Метод makeText (Context, CharSequence, int) в типе Toast не применим для аргументов (new View.OnClickListener() {}, String, int)' Это ошибка, которую я получаю, когда я использую Toast. – rond
Почему вы ловите 'IOException'? Исключением является 'NumberFormatException' –