2016-11-06 3 views
2

Я пытаюсь написать в код, чтобы перечислить все объекты в классе. (Что работает), но я хочу получить код, чтобы проверить, есть ли объекты, если игрок пуст, и распечатайте сообщение на экран, если оно есть. Но я не могу заставить его работать. Может ли кто-нибудь помочь мне, пожалуйста?JAVA класс массива

Класс

public void listAll() 
    { 
     for (Song a : songs) { 
     if(songs.isEmpty()) //cant get this to check if there are songs on the player. 
     { 
      System.out.print("There are no songs on the playlist"); 
     } 
     else{ 
      System.out.print(a); 
      } 
     } 
    } 

тестер

keyIn.nextLine(); //clear the buffer of the previous option 
        System.out.print("On player are"); 
        player.listAll(); 
        break; 
+1

Не нужно проверять это условие, поскольку вы используете 'усиление для цикла '. Loop willl автоматически завершается, когда следующий элемент в массиве имеет значение NULL. –

+1

Вы попробовали отладить его? – Mritunjay

+0

Вам удалось заставить его работать? – ItamarG3

ответ

2

Если songs пусто, то цикл не будет введен. Вы должны проверить вне цикла:

public void listAll() { 
    if(songs.isEmpty()) { 
     System.out.println("There are no songs on the playlist"); 
    } else { 
     for (Song a : songs) { 
      System.out.println(a); 
     } 
    } 
} 
3

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

public void listAll() { 
    if (songs.isEmpty()) // cant get this to check if there are songs on the 
    { 
     System.out.print("There are no songs on the playlist"); 
    } else { 
     for (Song a : songs) { 
      System.out.print(a); 
     } 
    } 

} 
2

Вы должны проверить состояние if(songs.isEmpty()) вне цикла for, потому что если list является empty, исполнение не идет внутри for loop, поэтому ваше if условия оператор не получит выполненных вообще.

public void listAll() 
    { 
     //Check this first 
     if(songs.isEmpty()) 
     { 
      System.out.print("There are no songs on the playlist"); 
      return;//It is even more better to return from here itself 
     } 

     //NOW, use for loop 
     //if songs size is zero, execution does not go inside the for loop 
     for (Song a : songs) { 
      System.out.print(a); 
     } 
    } 

Это даже лучше, если вы можете использовать return заявление, чтобы вернуться к абоненту (сразу) из метода (как выше), что будет означать, что нет необходимости обрабатывать последующие строки кода в методе.

+0

Большое спасибо, что сработало удовольствие и теперь могу сделать это для некоторых других частей, которые мне нужны :-) – americanheartbreak

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