four systems Ответов: 1

Печать чисел из строки


код, который печатает числа, которые вводит пользователь, но когда пользователь вводит строку и числа, он выдает ошибку

Цитата:
Исключение в потоке "main" java.lang.NumberFormatException: для входной строки: "java"


import java.io.BufferedReader;
import java.io.*; 

// Read a string from console using a BufferedReader. 
 
class StringReader { 
  public static void main(String args[]) throws IOException 
  { 
    // create a BufferedReader using System.in 
    BufferedReader br = new BufferedReader(new 
                            InputStreamReader(System.in));
    
    
    String str;
    System.out.println("Enter lines of text."); 
    System.out.println("Enter 'stop' to quit."); 
    do {       
      str = br.readLine(); 
      int value = Integer.parseInt(str);  
      System.out.println(str); 
      System.out.println(value);
    } while(!str.equals("stop")); 
  } 
}


в результате получается
Введите строки текста.
Введите "стоп" , чтобы выйти.
45
45
45
число-42
Исключение в потоке "main" java.lang.NumberFormatException: для входной строки: "число равно 42"
в java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
на Яве,Лэнг.Integer.parseInt(Integer.java:580)
на Яве,Лэнг.Integer.parseInt(Integer.java:615)
в inout.StringReader.main(StringReader.java:21)
C:\Users\Admin\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java возвращается: 1




когда пользователь набирает 45, программа печатает 45, когда пользователь вводит "число равно 42", то возникает ошибка, хотелось бы, чтобы он взял число из строки и напечатал только число с помощью
Целое.ул. parseInt();

Что я уже пробовал:

измененный код и поиск ошибок

1 Ответов

Рейтинг:
1

Richard MacCutchan

Это точно тот же вопрос, который я изложил вам вчера в Java.lang.numberformatesception: для входной строки: ""[^]. Вы не можете разобрать нечисловые символы как число, это не имеет смысла.


four systems

как Вы читаете числа из строки, которая имеет текст и цифры, скажем, например, строка "45 java virtual machine is for class files" читает и печатает 45, должны ли мы использовать регулярные выражения и выполнять поиск по шаблону

спасибо

Richard MacCutchan

Вы разделяете строку и ищете подстроки, содержащие числа. Вам нужно потратить некоторое время на изучение основных классов Java, которые предоставляют все эти функции. В качестве альтернативы вам нужно установить правила на то, что приемлемо в качестве входного текста, когда вы просите пользователя предоставить некоторые данные (но применяются те же основные правила).

Maciej Los

5ed!

Richard MacCutchan

:thumbsup: (я надеюсь, что это не оскорбление в Польше).

Maciej Los

:thumsub:
(Нет, это не оскорбление, даже в Польше)

Richard MacCutchan

:)

four systems

спасибо