Java - Как проверить, есть ли в массиве значение или нет - PullRequest
0 голосов
/ 04 июня 2018

У меня есть код, в котором я создаю файл .xlsm, в определенной части код выполняет mysql, выбирает и устанавливает результат в массиве, и я должен проверить этот массив, если он пуст или нет.Но или он возвращает true каждый раз, или он возвращает false каждый раз.Например, в этом выборе есть значение в 296-м индексе, а другое - в 322-м индексе, но на этот раз логическое значение empty возвращает мне true, где должны были возвращаться false, потому что естьзначение в массиве.Я попробовал кое-что, но у меня ничего не получилось.

Что я делаю не так?

Это мой код Java:

ResultSet check_name = connect.createStatement().executeQuery("select `name` from `company`"); 
ArrayList<String> names = new ArrayList<String>(); boolean empty = true;

while(check_name.next()){ 
 names.add(name.getString("name")); 
} 

for(int l = 0; l < names.size(); l++){
 if(names.get(l).contains("[0-9a-zA-Z]+")){
  empty = false; break; 
 } 
}

if(empty == true){
 cell = row.createCell(26);
 cell.setCellValue("it's empty");
}else{
 cell = row.createCell(26);
 cell.setCellValue("it's not empty");
}

Ответы [ 4 ]

0 голосов
/ 04 июня 2018

Это утверждение является виновником:

if(names.get(l).contains("[0-9a-zA-Z]+"))

Я думаю, что вы пытались выполнить какое-то регулярное выражение, но он просто проверяет, содержит ли строка это значение: "[0-9a-zA-Z] + "

В вашем случае это всегда должно быть false, и, следовательно, ваш пустой флаг всегда равен true!

0 голосов
/ 04 июня 2018

Вы должны использовать trim () и isEmpty () методы класса String.

for(int l = 0; l < names.size(); l++){
 if(names.get(l)!=null && !(names.get(l).trim().isEmpty())){
  empty = false; break; 
 } 
}
0 голосов
/ 04 июня 2018

Содержит ищет последовательность символов, а не регулярное выражение.Таким образом, он не соответствует ожидаемому.

Вместо этого следует использовать isEmpty ().если (! names.get (л) .isEmpty ())

0 голосов
/ 04 июня 2018
        for(int l = 0; l < names.size(); l++){
    String name = name.get(l);
if(name.equals("")){
Log.d("TEXT ?","Doesn't CONTAIN TEXT");
}else{
Log.d("TEXT ?","CONTAIN TEXT");
}

  }

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

...