Mik*_*aye 31 java string jtextarea parseint
我想知道如果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))){}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助赞赏.
fmu*_*car 50
public static boolean isParsable(String input){
try{
Integer.parseInt(input);
return true;
}catch(ParseException e){
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
Ker*_*ğan 27
检查它是否是整数可解析的
public boolean isInteger(String string) {
try {
Integer.valueOf(string);
return true;
} catch (NumberFormatException e) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
或使用扫描仪
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();
}
}
Run Code Online (Sandbox Code Playgroud)
或使用正则表达式像
private static Pattern doublePattern = Pattern.compile("-?\\d+(\\.\\d*)?");
public boolean isDouble(String string) {
return doublePattern.matcher(string).matches();
}
Run Code Online (Sandbox Code Playgroud)
Ste*_*aly 12
这将是这样的.
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
}
}
Run Code Online (Sandbox Code Playgroud)
如果无法解析整数,parseInt将抛出NumberFormatException.所以这样做会回答你的问题
try{
Integer.parseInt(....)
}catch(NumberFormatException e){
//couldn't parse
}
Run Code Online (Sandbox Code Playgroud)
您可以使用扫描仪而不是try-catch:
Scanner scanner = new Scanner(line).useDelimiter("\n");
if(scanner.hasNextInt()){
System.out.println("yes, it's an int");
}
Run Code Online (Sandbox Code Playgroud)