2017-02-23 44 views
0

Я пытаюсь взять ввод с использованием класса Scanner в Java.Как избежать точки с запятой в сканере Java

Мой код:

Scanner scan = new Scanner(System.in); 
String newline = scan.next(); 

Мой вход что-то вроде:

india gate;25;3 

и я пытаюсь заменить всю строку выше с новой строки:

new delhi;23;2 

с использованием

.replace(str1, str2) 

Проблема заключается в том, что это только заменив первое слово в строке и вывод что-то вроде:

india delhi;25;3 

Как я могу принять его в целом строку с помощью Scanner?

+0

использовать ';' как ваш разделитель. –

+0

, пожалуйста, покажите весь ваш код. –

+0

http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#next(java.lang.String) см. Это. –

ответ

0

Вы должны прочитать о том, как класс работ Scanner. По умолчанию, по умолчанию используется пробел в качестве разделителя для next(). Это означает, что когда вы вызываете next(), он читает до тех пор, пока не находит пробелы, а затем возвращает то, что он читает. Поэтому, когда вы звоните next() по телефону "india gate;25;3", он читает "india", а затем ударяет по пробелу. Поэтому он возвращает вас "india". Если вы хотите читать до новой строки (что похоже на вас), вы хотите использовать nextLine().

+0

, что я говорю в своем ответе, но она не согласилась. :) –

+0

Я думаю, что она взяла вопрос с вашим ответом, разделив строку на точки с запятой. – Neatname

+0

Да, у нее есть проблема с этим пробелом. –

1

Использование ; в качестве разделителя, как этот

while (scanner.hasNextLine()) { 
    lineScanner = new Scanner(scanner.nextLine()); 
    lineScanner.useDelimiter(";"); 
    String article = lineScanner.next(); 
    // and so on... 
} 
+0

спасибо kishan но используя; поскольку делитель разделил бы строку на основе; я не хочу разделить мою строку и, скорее, сохранить ее неповрежденным. –

+0

одобрить мое редактирование или сделать самостоятельно, чтобы другие не путались. @NitikaJain –

+0

scan.usedelimeter замедляет весь процесс на самом деле программа не движется вперед только ... –

1

использования .replaceAll("india gate;25;3", "new delhi;23;2");

выход

new delhi;23;2 
+0

вход приходит динамический u не может сделать это для всех. –

+0

, если ввод идет динамическим, то также мы можем также регулярное выражение, но более конкретное –

Смежные вопросы