parseInt崩溃Android应用程序

时间:2011-09-19 19:06:38

标签: android crash integer parseint

所以我正在尝试制作一个计算器应用程序(只是为了获得Android开发的一大部分),我注意到一些测试表明来自“String tack1”的parseInt转换导致应用程序崩溃。有人可以告诉我为什么吗?我似乎无法弄明白,我已经在网上搜索了很长一段时间了。 (呵呵我是个菜鸟,所以请放轻松)在下面的代码中,我修改了几行,使它看起来很明显它应该打印但它仍然崩溃。这是代码:


equals.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            oC = 1; //operator checker is on 1 (for plus)
            switch(oC){ //check for operator clicked
                case 0: break;
                case 1:
                   tack1 = "1"; //INSERTED THIS TO MAKE OUTPUT OBVIOUS
                   tack1 = tack1.trim(); tack2 = tack2.trim(); //INSERTED BEFORE TO DEAL WITH WHITESPACE
                   numOne = Integer.parseInt(tack1); //CRASHES HERE
                   answer.setText(numOne);
                   modeChecker = 0; oC = 0;break;

关于计划的注释(一些评论重复以及其他内容):

tack1 =“1”;是使输出明显

tack1.trim()用于处理空白

是的,大概是数字和整数(甚至不是负整数)

是numOne是一个整数,并且在上面定义了方便(不在此处列出的代码中)

很抱歉,由于我添加的评论

,所有缩进都搞砸了(在案例1之后)

这是我的onClick方法的一部分,因此这里不包含右括号。

有人可以帮帮我吗? 谢谢你:D

1 个答案:

答案 0 :(得分:4)

在打电话给parseInt之后,我愿意打赌它实际上会在下一行崩溃。

您正在TextView上调用setText(int)。将int传递给此方法时,该int是指向字符串资源的指针...您可能希望自动转换为字符串。由于您传递的是在应用程序中生成的int,因此此int也极不可能指向res / values / strings.xml文件中的字符串资源。你真正想要做的是首先将numOne更改为字符串,你可以内联:

更改

answer.setText(numOne);

answer.setText(String.valueOf(numOne));

你很高兴。