2015-06-02 4 views
0

У меня есть назначение, где я должен прикрепить буквы «un» к любому слову, который вводит пользователь (если только введенное слово уже не имеет «un» перед ним, и в этом случае я просто возвращаю введенное слово). Я тестирую свой метод, но я столкнулся с одной проблемой: моя программа продолжает возвращать ошибку, если я должен проверить пустой ввод. Вот мой код:Как проверить пустую строку в булевом выражении?

Scanner keyboard = new Scanner(System.in);            
    System.out.print("Enter: "); 
    String input = keyboard.nextLine(); 

    if(input.substring(0,2).equalsIgnoreCase("un")) 
    { 
     System.out.println(input); 
    } 

    else if(input.equals("")) 
    { 
     System.out.println("un"); 
    } 
    else 
    { 
     System.out.println("un" + input); 
    } 

Так что я хотел бы спросить, как я могу проверить пустой ввод/пустую строку, так как, очевидно, что «» цитаты не работают.

+4

Какая ошибка вы получаете и где? (Подсказка: я подозреваю, что это до того, как вы перейдете ко второму условию ...) –

ответ

4

У вас возникла эта проблема, потому что вы пытаетесь получить подстроку строки, которая не имеет требуемой длины. Сначала поставьте пустую строку.

if(input.equals("")||input.length==1) 
    { 
     System.out.println("un"); 
    } 

    else if(input.substring(0,2).equalsIgnoreCase("un")) 
    { 
     System.out.println(input); 
    } 
    else 
    { 
     System.out.println("un" + input); 
    } 
+1

Это решение не работает для строки с длиной = 1 – MaxZoom

+0

@MaxZoom good catch :) –

5

Там нет ничего плохого с проверкой input.equals("") в-себе. Проблема в том, что у вас есть еще один тест заранее, который выдает исключение, если input короче, чем 2 символа.

Существует несколько способов решить эту проблему, но я просто упрощу вещи и использую startsWith. Пустая строка не действительно нужен особый случай своих - просто пощечина un перед ним, и вы получите un:

if (input.toLowerCase().startsWith("un")) { 
    System.out.println(input); 
} else { 
    System.out.println("un" + input); 
} 
2

Если бы это было не домашнее задание, и библиотека может быть использована для других вещи (использование этого в этой единственной цели может быть излишним), вы можете использовать StringUtils.PrependIfMissing().

Он выполняет именно это и обрабатывает нули.

+0

Изменен канал для добавления. – kervin

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