所以我正在尝试制作一个计算器应用程序(只是为了获得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
答案 0 :(得分:4)
在打电话给parseInt
之后,我愿意打赌它实际上会在下一行崩溃。
您正在TextView上调用setText(int)
。将int传递给此方法时,该int是指向字符串资源的指针...您可能希望自动转换为字符串。由于您传递的是在应用程序中生成的int,因此此int也极不可能指向res / values / strings.xml文件中的字符串资源。你真正想要做的是首先将numOne更改为字符串,你可以内联:
更改
answer.setText(numOne);
到
answer.setText(String.valueOf(numOne));
你很高兴。