2016-03-07 3 views
-1

Таким образом, моя программа позволяет пользователю вводить строку, а затем удалять все вхождения символа. Если символ не существует в строке, он должен печатать сообщение об ошибке. Прямо сейчас, я создал цикл, чтобы проверить каждый символ в строке, чтобы создать новую строку без символа. Я не уверен, как создать цикл проверки ввода без печати сообщения об ошибке для каждого символа, который не соответствует символу, который пользователь хочет удалить. Я надеюсь в этом есть смысл!Loop ввода

Вот часть моего кода:

//REMOVE LOOP 
System.out.println("Enter the character to remove"); 
String oldChar = keyboard.nextLine(); 

while (indexEnd <= string.length()) { 
    String substring = string.substring(indexStart, indexEnd); 
    indexStart++; 
    indexEnd++; 

} 

    while (substring.equals(oldChar)) { 
     substring = string.substring(0, indexStart-1); 
     string = substring + string.substring(indexEnd - 1); 
     indexStart=0; 
     indexend=1; 
    } 
} 
+0

Я бы предложил просто использовать один из методов String (str.replace (c, "")). То есть, если это не домашнее задание, в котором вам нужно сделать это с помощью цикла. –

+1

Пожалуйста, добавьте stacktrace и код. Вы также можете посмотреть [Как спросить] (http://stackoverflow.com/help/how-to-ask), чтобы улучшить вопрос. Добро пожаловать в SO! –

ответ

1

Добавить пункт охраны (чек) в начале.

Лучше избегать циклов и писать что-то более читаемое.

public String removeCharacter(String text, String character) { 
    if(!text.contains(character)) { 
     throw new IllegalArgumentException("Character " + character + " not found in text " + text); 
    } else { 
     return text.replace(character, ""); 
    } 
} 
0

Хотя ответ Swifter является большим и более удобным для чтения, вот еще одна альтернатива:

Поскольку мы только удаление символов, мы знаем, что характер не был найден, если в результате длина остается неизменным.

public String remove(String text, String character) { 
    // save the original length because we are going to use it later 
    var origLength = text.length(); 

    text = text.replace(character, ""); 

    // check new length against original length 
    // - if they are the same, then 'character' wasn't found 

    if(origLength == text.length()) { 
     throw new IllegalArgumentException("Character " + character + " not found."); 
    } 

    return text; 
} 

Технически это более производительным, так как есть только один проход через строку (хотя в действительности это ничтожно мало).

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