我想知道如果Integer.parseInt(无论如何)没有失败,该怎么办。
更具体地说,我有一个由换行符分隔的用户指定值的jTextArea。
我想检查每一行,看看是否可以转换为int。
想像这样的东西,但它不起作用:
for(int i = 0; i < worlds.jTextArea1.getLineCount(); i++){
if(Integer.parseInt(worlds.jTextArea1.getText(worlds.jTextArea1.getLineStartOffset(i),worlds.jTextArea1.getLineEndOffset(i)) != (null))){}
}
任何帮助表示感谢。
答案 0 :(得分:50)
public static boolean isParsable(String input){
try{
Integer.parseInt(input);
return true;
}catch(ParseException e){
return false;
}
}
答案 1 :(得分:26)
检查它是否是整数可解析
public boolean isInteger(String string) {
try {
Integer.valueOf(string);
return true;
} catch (NumberFormatException e) {
return false;
}
}
或使用扫描仪
Scanner scanner = new Scanner("Test string: 12.3 dog 12345 cat 1.2E-3");
while (scanner.hasNext()) {
if (scanner.hasNextDouble()) {
Double doubleValue = scanner.nextDouble();
} else {
String stringValue = scanner.next();
}
}
或使用正则表达式,如
private static Pattern doublePattern = Pattern.compile("-?\\d+(\\.\\d*)?");
public boolean isDouble(String string) {
return doublePattern.matcher(string).matches();
}
答案 2 :(得分:11)
就是这样的。
String text = textArea.getText();
Scanner reader = new Scanner(text).useDelimiter("\n");
while(reader.hasNext())
String line = reader.next();
try{
Integer.parseInt(line);
//it worked
}
catch(NumberFormatException e){
//it failed
}
}
答案 3 :(得分:9)
如果parseInt无法解析整数,则会抛出NumberFormatException。所以这样做会回答你的问题
try{
Integer.parseInt(....)
}catch(NumberFormatException e){
//couldn't parse
}
答案 4 :(得分:8)
您可以使用扫描仪代替try-catch:
Scanner scanner = new Scanner(line).useDelimiter("\n");
if(scanner.hasNextInt()){
System.out.println("yes, it's an int");
}
答案 5 :(得分:3)
而不是try
&amp; catch
表达式..最好在字符串上运行正则表达式以确保它是一个有效的数字..
答案 6 :(得分:2)
您可以使用java中的try..catch statement来捕获可能由Integer.parseInt()引起的异常。
示例:
try {
int i = Integer.parseint(stringToParse);
//parseInt succeded
} catch(Exception e)
{
//parseInt failed
}
答案 7 :(得分:2)
你可以尝试
NumberUtils.isParsable(yourInput)
它是org/apache/commons/lang3/math/NumberUtils
的一部分,它会检查字符串是否可以由Integer.parseInt(String)
,Long.parseLong(String)
,Float.parseFloat(String)
或Double.parseDouble(String)
进行解析。
见下文: