제가 계획하고 있는 어플은 계산방법이 이미 정해진 계산기이며, 고액이 주로 나오기 때문에 데이터 타입을 Long 타입으로 해야
정확한 값이 나오더군요. 그래서 예시값을 입력하면 정확한 계산은 나오지만 그러나 아무런 숫자를 입력하지 않고 계산 버튼을 누를 경우 다음과 같은 오류화면이 나오고 튕깁니다.
java.lang.IllegalStateException: Could not execute method for android:onClick
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:390)
at android.view.View.performClick(View.java:6294)
at android.view.View$PerformClick.run(View.java:24770)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)
at android.view.View.performClick(View.java:6294)
at android.view.View$PerformClick.run(View.java:24770)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Caused by: java.lang.NumberFormatException: For input string: ""
at java.lang.Long.parseLong(Long.java:602)
at java.lang.Long.parseLong(Long.java:632)
at org.techtown.myfirstapplication.MainActivity.MyOnClick(MainActivity.java:45)
at java.lang.reflect.Method.invoke(Native Method)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)
at android.view.View.performClick(View.java:6294)
at android.view.View$PerformClick.run(View.java:24770)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
코드는 이렇습니다.
TextView result; // 계산된 결과 값을 저장하는 변수
EditText number1, number2, number3; // 계산하기 위한 값들
Button calculateButton; // 계산버튼
// 환산취득가액 계산 관련 메서드 처리
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void MyOnClick(View view) {
number1 = findViewById(R.id.number1);
// number1.addTextChangedListener(watcher);
number2 = findViewById(R.id.number2);
// number2.addTextChangedListener(watchernum2);
number3 = findViewById(R.id.number3);
// number3.addTextChangedListener(watchernum3);
result = findViewById(R.id.result);
// result.addTextChangedListener(watcherresult);
calculateButton = findViewById(R.id.calculateButton);
// 계산 메서드
long n1 = Long.parseLong(number1.getText().toString());
long n2 = Long.parseLong(number2.getText().toString());
long n3 = Long.parseLong(number3.getText().toString());
result.setText(Long.toString(n1 * n2 / n3));