Посмотрите на этот цикл:
for (p=1; p<=4; p++)
Обратите внимание, что он начинается с 1. Так что songs[0]
по-прежнему будет иметь значение по умолчанию null
.Теперь посмотрим, как вы используете массив:
for (int i=0; i<songs.length; i++)
{
if (songs[p].equals(key))
Мало того, что вы пытаетесь использовать p
здесь, когда я думаю, что вы имеете в виду i
, но либо способ потерпит неудачу.Использование p
позволит получить доступ к songs[5]
, выходящему за пределы, а использование i
вызовет equals
для songs[0]
, что является нулевым.
Надеюсь, этого достаточно, чтобы вы смогли продолжить работу.Несколько других моментов:
- Ваше "Извините, что?"подсказка внутри цикла.Вы имели в виду, что это так?
- Вы должны взглянуть на соглашения об именах Java, как для заглавных букв, так и для придания вашим методам более значимых имен
- Вы должны попытаться объявить переменные в узкой области видимостинасколько это возможно.Вы бы не смогли ошибиться, используя
p
в неправильном месте, если бы объявили его как часть цикла for
.