2016-02-14 4 views
0

Я пытаюсь пропустить мой arraylist и распечатать адреса электронной почты, которые являются недопустимыми. Чтобы быть недействительным, адрес не содержит знак @ или период.int не может быть преобразован в charsequence

Я получаю сообщение об ошибке, int не может быть преобразован в charsequence для моего метода.

public static void print_invalid_emails(){ 
    for (int i = 0; i < studentList.size(); i++) { 
     if (studentList.get(i).getEmail().contains('@' + '.')){ 
      System.out.println("Scanning Roster"); 
     } 
     else { 
      System.out.println("Invalid email address, " + studentList.get(i).getEmail()); 

     } 
    } 
} 
+0

Что происходит, когда вы запускаете этот код? –

ответ

1

Исправлена ​​ошибка здесь:

if (studentList.get(i).getEmail().contains('@' + '.')){ 

Оно должно быть:

if (studentList.get(i).getEmail().contains("@") || studentList.get(i).getEmail().contains(".")){ 
+0

'||' должно быть '&&' –

2

Проблема заключается в том, что Java рассматривает '@' + '.' как сложение двух символов, а не как конкатенацию строка. Результатом этого добавления является кодовая точка UNICODE @ плюс кодовая точка Юникода ., выраженная как int.

Если вы хотите проверить, что элемент не хватает . или @, вы должны выполнить эти две проверки в двух отдельных вызовов contains(...)

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