Подтвердить что ты не робот

Java - проверка исключения 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))){}
 }

Любая помощь была оценена.

4b9b3361

Ответ 1

public static boolean isParsable(String input){
    try{
        Integer.parseInt(input);
        return true;
    }catch(ParseException e){
        return false;
    }
}

Ответ 2

Проверьте, что это синтаксический синтаксис

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();
}

Ответ 3

Это будет что-то вроде этого.

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
    }
}

Ответ 4

parseInt сгенерирует NumberFormatException, если не сможет проанализировать целое число. Таким образом, это ответит на ваш вопрос

try{
Integer.parseInt(....)
}catch(NumberFormatException e){
//couldn't parse
}

Ответ 5

Вы можете использовать сканер вместо try-catch:

Scanner scanner = new Scanner(line).useDelimiter("\n");
if(scanner.hasNextInt()){
    System.out.println("yes, it an int");
}

Ответ 6

вместо try ing и catch ing выражений.. его лучше запустить регулярное выражение в строке, чтобы убедиться, что это допустимое число.

Ответ 7

Вы можете использовать инструкцию try..catch в java, чтобы получить исключение, которое может возникнуть из Integer.parseInt().

Пример:

try {
  int i = Integer.parseint(stringToParse);
  //parseInt succeded
} catch(Exception e)
{
   //parseInt failed
}