我正在尝试在String中添加字符。但这似乎不起作用。我正在使用此代码:
public String createDeciOfOct (String number) {
int result = 0;
String[] numberArray = number.split("");
for (String numb : numberArray) {
if(numb != null || numb != "") {
result += Integer.parseInt(numb);
}
}
return Integer.toString(result);
}
我如何执行它是这样的:
frmOctToDeci.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText edtTxt = (EditText) findViewById(R.id.octalValue);
String value = edtTxt.getText().toString();
String result = createDeciOfOct(value);
TextView txtView = (TextView) findViewById(R.id.fromOctRes);
txtView.setText(result);
}
});
它给我一个错误:
java.lang.NumberFormatException: Invalid int: ""
这意味着存在某种空字符串。我怎么能阻止这个?
logcat错误如下:
答案 0 :(得分:5)
始终使用equals()
来测试({1}} s:
String
同样可以更容易地将输入作为!numb.equals("")
处理,但这只是一个想法:
char[]
然后很容易将char[] numberArray = number.toCharArray()
转换为数字,只需在您要转换的每个char
上使用Character.getNumericValue()
。
答案 1 :(得分:1)
这是错的,所以我编辑了它。
if(numb != null || numb != "")
它应该是(我想,所以它仍然是错的)
if(numb != null && numb != "")
编辑:评论是对的,我只是想注意&&而不是|| 。没关系,忘掉它!
所以真的应该是:
if(numb != null && ! numb .equals ("") )
当然! “”.equals(麻木)做同样的事情
答案 2 :(得分:0)
此算法可以使用:
public String createDeciOfOct (String number) {
int result = 0;
for (int i = 0 ; i<number.length(); i++) {
result = result + Integer.parseInt(String.valueOf(number.charAt(i)));
}
return Integer.toString(result);
}
答案 3 :(得分:0)
首先,作为另一个答案陈述,您不应该使用!=
来比较字符串,而是equals
。
然后,split采用regexp,这是将String转换为单字符串数组的奇怪方法。我认为简单地使用相应的char数组并使用Character.getNumericValue
char[] charArray = number.toCharArray();
for (char c: charArray ) {
result += Character.getNumericValue(numb);
}
要充实,上面的代码不会执行任何检查以确保您的初始字符串只包含数字字符。如果有这样的字符,代码不会失败但会产生意想不到的结果。