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