Проверка пустой строки в Java

Я не знаю, что не так с приведенным ниже кодом.... Я получаю ввод от текстового поля и помещаю ввод в строку. Если текстовое поле пуст, оно вернет пустую строку. В приведенном ниже коде

   String[] str = new String[9]; 
   for(int i=0;i<9;i++){
       if(str[i].equals("")){
          System.out.println("set " + cmds[i] + " " + str[i]);
          WriteThread.sendCommand("set " + cmds[i] + " " + str[i] + "\n", false);
       }
    }

В приведенном выше коде str[i] хранится текст ввода текстовых полей, и я пытаюсь проверить, является ли какой-либо элемент массива пустым. Я также пробовал с str[i] == "" и str[i] == null, но не повезло. Утверждение внутри блока if, если я печатаю строку str[i], ничего не показывает, что означает, что она пуста.

Я делаю что-то не так?

Ответы

Ответ 1

Вы можете попробовать:

if (str[i] == null || str[i].trim().equals("")){
// your code
}

Ответ 2

Вы можете использовать Apache Commons Lang для проверки строки:

if (StringUtils.isBlank(str[i]) {
    ...
}

StringUtils.isBlank проверяет, является ли строка null или пустой (т.е. если она равна "", когда все пустые символы удалены).

Ответ 3

Вышеприведенный код выполняется только в том случае, если строка пуста, является ли это желаемым поведением? Кроме того, объявляя str как новое прямо перед циклом, он гарантирует, что он будет пустым.

Если вы пытаетесь присвоить значения из текстовых полей, вам нужно будет иметь эти назначения где-то перед циклом.

Ответ 4

Я действительно пытался запустить фрагмент кода и получил исключение NullPointerException на вашем условном

ул [I].equals( "")

str [i] == null работал у меня. Вы уверены, что задали правильный код в своем вопросе. Кажется странным тестировать пустую строку пустого массива, который вы только что инициализировали.

Ответ 6

Очень простое решение может быть таким.

if(str[] != null && !str[].equals(""))