如何在Java(Android)中获取整数的长度

如何在Java(Android)中获取整数的长度,android,onclicklistener,variable-length,Android,Onclicklistener,Variable Length,所以如果我的值是1234,那么输出应该是4 我已经写了以下代码,但不知道我做错了什么。 这是一个应用程序,可以添加两个数字。所以我有两个EditTextField。但是如果EditTextfield留空,应用程序就会崩溃。 因此,我考虑将0的值赋给EditTextfield,该字段保留为空,因为它(应该)的字符长度为0 这应该会得到正确的结果: 例如,如果EditTextfield“firstnumET”的值为5,而“secondnumET”为空: 5+0=5 问题可能是 注释太长了,为什么不

所以如果我的值是1234,那么输出应该是4

我已经写了以下代码,但不知道我做错了什么。 这是一个应用程序,可以添加两个数字。所以我有两个EditTextField。但是如果EditTextfield留空,应用程序就会崩溃。 因此,我考虑将0的值赋给EditTextfield,该字段保留为空,因为它(应该)的字符长度为0

这应该会得到正确的结果:

例如,如果EditTextfield“firstnumET”的值为5,而“secondnumET”为空:

5+0=5

问题可能是




注释太长了,为什么不检查字符串,然后根据长度设置它们(如果不是空的话)

String firstString = firstnumET.getText().toString();
firstNum = (firstString.trim().equals(""))? 0: firstString.length();

String secondString = secondnumET.getText().toString();
secondNum = (secondString.trim().equals(""))? 0: secondString.length();

ansTV.setText(Integer.toString(firstNum + secondNum));
显然,您可以将其变得更复杂,检查以确保字符串仅包含数值,从而确保您没有获得非数值字符串的长度

String.trim删除空白,这有助于避免编辑文本中充满空格。

您的问题在于:

secondnum = Integer.parseInt(secondnumET.getText().toString());
如果留空,则secondnumET.getText().toString()将返回null

这里有一个更好的方法来完成你的尝试

public void onClick(View v) {


    String firstnum = firstnumET.getText().toString();
    String secondnum = secondnumET.getText().toString();

    int cache1 = firstnum.equals("") ? 0 : Integer.parseInt(firstnum);
    int cache2 = secondnum.equals("") ? 0 : Integer.parseInt(secondnum);
    total = firstnum + secondnum;

    ansTV.setText(Integer.toString(total).length());  // set the answer to the length of total
    ansTV.setText(Integer.toString(total));  // set the answer to total
}

使用String.length()和Integer.parseInt()有什么原因吗?我很确定length()只能返回一个整数。@camdroid编写解决方案的速度非常快,犯了一个愚蠢的错误:PEditText.getText().toString()如果未输入任何内容,则返回null,而不是“”。您的?:语句将始终计算为false。getText()实际上从不返回null。它返回超类CharSequence,并返回在构造函数中初始化为“”的文本。看起来我不久前遇到的错误并不是由我认为是什么引起的。感谢您提供的信息。firstnum和secondnum永远不会等于null。getText不是这样工作的。解析int将返回字符串的值,而不是它的长度。我在第一篇文章中就犯了这个错误。你似乎是对的。我在一个应用程序中得到了一个NullPointerException,并添加了一个null检查来解决它,但它一定是因为另一个原因解决了它。去检查我的代码…之前肯定做过,编程的乐趣:P
public void onClick(View v) {


    String firstnum = firstnumET.getText().toString();
    String secondnum = secondnumET.getText().toString();

    int cache1 = firstnum.equals("") ? 0 : Integer.parseInt(firstnum);
    int cache2 = secondnum.equals("") ? 0 : Integer.parseInt(secondnum);
    total = firstnum + secondnum;

    ansTV.setText(Integer.toString(total).length());  // set the answer to the length of total
    ansTV.setText(Integer.toString(total));  // set the answer to total
}