我收到以下错误java.lang.IllegalStateException:无法执行活动的方法
我尝试使用我收到以下错误java.lang.IllegalStateException:无法执行活动的方法,java,android,Java,Android,我尝试使用MainActivity类中的EvalauatePostfix.class和equal(View-View)方法计算后缀字符串 当我按下按钮时,会出现以下错误: java.lang.IllegalStateException:无法执行的方法 活动 在android.view.view$1.onClick(view.java:3861 public class EvaluatePostfix { public String outEvaluatePostfi
MainActivity
类中的EvalauatePostfix.class
和equal(View-View)
方法计算后缀字符串
当我按下按钮时,会出现以下错误:
java.lang.IllegalStateException:无法执行的方法
活动
在android.view.view$1.onClick(view.java:3861
public class EvaluatePostfix {
public String outEvaluatePostfix(String s){
String in = s;
String[]inArray = split(in);
int size = inArray.length;
double ans = 0;
Stack<Double> stack = new <Double> Stack();
for (int i = 0; i < size; i++) {
String c = inArray[i];
if (!checkOp(c)){
double cd = Double.parseDouble(c);
stack.push(cd);
}else{
double op1 = stack.pop();
//double opd2 = (double) Character.digit(String.valueOf(op2),10);
double op2 = stack.pop();
//double opd1 = (double) Character.digit(op1,10);
// double ans1 = op2/op1;
if(c.equals("+")){
ans = op2+op1;
stack.push(ans);
}
if(c.equals("-")){
ans = op2-op1;
stack.push(ans);
}
if(c.equals("*")){
ans = op2*op1;
stack.push(ans);
}
if(c.equals("/")){
ans = op2/op1;
stack.push(ans);
}
}
}
double outD = stack.pop();
String out = String.valueOf(outD);
return out;
}
public static String[] split(String s){
String iString = s;
String token [] = null;
for (int i = 0; i < iString.length(); i++) {
token = iString.split(" ");
}
return token;
}
public boolean checkOp(String c) {
if (c.equals("+")||c.equals("-")||c.equals("/")||c.equals("*")){
return true;
}else
return false;
}
}
public class MainActivity extends Activity {
TextView textView;
String input ="";
EvaluatePostfix evaluatePostfix;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.textView);
textView.setText(input);
evaluatePostfix = new EvaluatePostfix();
}
public void onClickNum(View view){
Button b = (Button) view;
input = input + b.getText();
textView.setText(input);
}
public void onClickOp(View view){
Button b = (Button) view;
input = input + b.getText();
textView.setText(input);
}
public void clear(View view){
textView.setText("");
input ="";
}
public void equal(View view){
InfixToPostfix infixToPostfix = new InfixToPostfix();
String out = infixToPostfix.outInfixToPostfix(textView.getText().toString());
String ans = evaluatePostfix.outEvaluatePostfix(out);
textView.setText(ans);
}
编辑:
完整日志
java.lang.IllegalStateException:无法执行的方法
活动在android.view.view$1.onClick上(view.java:3861) 在android.view.view.performClick上(view.java:4476) 在android.view.view$PerformClick.run(view.java:18822) 位于android.os.Handler.handleCallback(Handler.java:808) 位于android.os.Handler.dispatchMessage(Handler.java:103) 位于android.os.Looper.loop(Looper.java:193) 位于android.app.ActivityThread.main(ActivityThread.java:5551) 位于java.lang.reflect.Method.Invokenactive(本机方法) 位于java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:730) 在dalvik.system.NativeStart.main(本机方法) 原因:java.lang.reflect.InvocationTargetException 位于java.lang.reflect.Method.Invokenactive(本机方法) 位于java.lang.reflect.Method.invoke(Method.java:515) 在android.view.view$1.onClick上(view.java:3856) 在android.view.view.performClick上(view.java:4476) 在android.view.view$PerformClick.run(view.java:18822) 位于android.os.Handler.handleCallback(Handler.java:808) 位于android.os.Handler.dispatchMessage(Handler.java:103) 位于android.os.Looper.loop(Looper.java:193) 位于android.app.ActivityThread.main(ActivityThread.java:5551) 位于java.lang.reflect.Method.Invokenactive(本机方法) 位于java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:730) 在dalvik.system.NativeStart.main(本机方法) 原因:java.lang.NumberFormatException:无效的双精度:“58X8” 位于java.lang.StringToReal.invalidReal(StringToReal.java:63) 位于java.lang.StringToReal.parseDouble(StringToReal.java:269) 位于java.lang.Double.parseDouble(Double.java:295) 在 com.example.muhammadkashif.calculator.EvaluatePostfix.outEvaluatePostfix(EvaluatePostfix.java:24) 在 com.example.muhammadkashif.calculator.MainActivity.equal(MainActivity.java:49) 位于java.lang.reflect.Method.Invokenactive(本机方法)
public static String[] split(String s){
return s.split(" ");
}