有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在安卓 java中将数字字符串值转换为整数?

我有这个密码:

 public void display(View view) {
    EditText edC = (EditText) findViewById(R.id.edC);
    TextView tvD = (TextView) findViewById(R.id.tvDisplay);
    try {
        String creditsS = edC.getText().toString();
        int credits = Integer.valueOf(creditsS);
        tvD.setText(credits);   
    } catch(NumberFormatException nfe) {
        tvD.setText("Couldn't parse.");
    }
}

当我运行程序并点击按钮时,应用程序崩溃了。我也试过了

int credits = Integer.parseInt(creditsS)

没用。问题出在哪里

顺便说一句,我无法打印stacktrace,因为logcat会像无限循环一样继续显示错误。 谢谢。:)


共 (2) 个答案

  1. # 1 楼答案

    应用程序因以下原因崩溃:

    tvD.setText(credits);
    

    问题是,您使用int作为参数调用setText()。该方法被定义为接受int,因此编译器不会抱怨,但这些int应该是字符串资源的ID。如果你用任意随机int调用setText(),应用程序会试图找到一个具有该id的字符串资源,并在执行此操作时与Resources$NotFoundException崩溃

    只需将该行更改为以下内容:

    tvD.setText("" + credits);
    
  2. # 2 楼答案

    由于您尚未发布StackTrace,因此解决您的问题可能会变得棘手
    正如@FD_u在他的回答中所解释的那样,你得到了一个未受伤害的异常
    作为一个很好的预防措施,在传递字符串之前,应该trim()所有字符串
    您应该这样编辑代码:

    public void display(View view) {
    EditText edC = (EditText) findViewById(R.id.edC);
    TextView tvD = (TextView) findViewById(R.id.tvDisplay);
    try {
        String creditsS = edC.getText().toString().trim();
        int credits = Integer.parseInt(creditsS);
        tvD.setText(""+credits);   
    } catch(NumberFormatException nfe) {
        tvD.setText("Couldn't parse.");
        nfe.printStackTrace();
    }
    catch(Exception e) {
        e.printStackTrace();
    }
    }
    

    我希望这有帮助