Мне нужно удалить пробелы из строки ввода из консоли - PullRequest
1 голос
/ 05 ноября 2019

поэтому у меня есть консольный ввод в этом формате:

"Адриан, 18, 180, 80" И я использовал это, которое не работает

BufferedReader reader = new BufferedReader(newInputStreamReader(System.in));
line = reader.readLine();
System.out.println("You added this user: " + line);
String[] b=line.split(",");
for(String name : b){
   name.replace(" ","");
   System.out.println(name);
   }

Однако вывод следующий:

Adi
 16
 180
 80

Я пробовал разные методы, но мне никто не помог. Возможно, это может быть потому, что я вызываю это в цикле for

Ответы [ 5 ]

2 голосов
/ 05 ноября 2019

Помните, что String является Неизменным , любая модификация должна быть назначена новому String.

   String trimmed = name.replace(" ","");
   System.out.println(trimmed);
2 голосов
/ 05 ноября 2019

Обратите внимание, как replace возвращает a string derived from this string (цитата из javadoc ). Это потому, что это не меняет значение начальной строки. В Java String являются неизменяемыми.

Вы должны либо напрямую напечатать результат replace, либо присвоить его переменной.

for(String name : b){
    name = name.replace(" ","");
    System.out.println(name);
}

или короче:

for(String name : b){
    System.out.println(name.replace(" ",""));
}

Используйте print вместо println, если хотите отобразить весь результат в одной строке.

1 голос
/ 05 ноября 2019

Взглянув на документацию метода String.replace (), мы находим следующее: «Возвращает новую строку, полученную в результате замены всех вхождений oldChar в этой строке на newChar.»

Это означает, что вы должны сохранить результат name.replace ("", ""), потому что метод не меняет вашу старую строку. Попробуйте это:

name = name.replace(" ","");
1 голос
/ 05 ноября 2019

String является неизменным, поэтому при вызове replace вы фактически не удаляете пробелы из name, а просто создаете новую строку без ссылки на нее. Вы можете просто присвоить replace возврат name:

for (String name : b) {
   name = name.replace(" ","");
   System.out.print(name);
}

Более того, если вы хотите, чтобы вывод выводился в одной строке, вы должны использовать System.out.print вместо System.out.println (каквыше). Последний добавляет новую строку в конце ввода.

0 голосов
/ 05 ноября 2019

Попробуйте использовать System.out.print () вместо System.out.println ().

System.out.println () поместит курсор в следующую строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...