我想将输入字符串转换为long:
String inputStr = inputText.getText().toString();
Long inputNumber = Long.valueOf(inputStr);
// do something with inputNumber
但是,如果用户输入带字母的字符串,则valueOf()会抛出一些异常导致程序崩溃。
另一方面,如果我在valueOf()周围构建一个try-catch块,我得到一个"无法解析符号inputNumber"错误。如果我在块外面声明Long inputnumber,我得到一个"这个变量可能没有被初始化"错误。
我想在textView中输出错误消息,输入错误的inputStr,并像往常一样继续运行程序。怎么做?
答案 0 :(得分:5)
在try / catch:
之外声明并初始化inputNumberLong inputNumber = null;
try {
inputNumber = Long.valueOf(inputStr);
}
catch (NumberFormatException e) {
// handle exception
}
答案 1 :(得分:0)
我更喜欢使用 util class 并声明布尔方法并使用它来检查输入的数字是否为数字。这是可重复使用的代码。
public class StringUtil {
public static boolean isNumeric(String str) {
boolean returnVal = false;
if (isNotEmpty(str)) {
try {
Long.parseLong(str);
returnVal = true;
} catch (NumberFormatException e) {
returnVal = false;
}
}
return returnVal;
}
}
在你的方法中
String inputStr = inputText.getText().toString();
Long inputNumber = null;
if (StringUtil.isNumeric(inputStr)) {
inputNumber = Long.valueOf(inputStr);
// do something with inputNumber
} else {
// either notify user or whatever you want to do.
}
如果您可以使用apache commons,那么您可以使用其NumberUtils.isNumber(String str)
String inputStr = inputText.getText().toString();
Long inputNumber = null;
if (NumberUtils.isNumber(inputStr)) {
inputNumber = Long.valueOf(inputStr);
// do something with inputNumber
}