2011-12-01 2 views
1
class History { 

    public String[] history; 

    public History(String[] history) { 
     if (history == null) 
      history = new String[]{}; 
     else 
      history = this.history 
    } 

} 

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

+0

новый String [] {} == no dimension array == фактическое использование вообще не используется. Что вы пытаетесь достичь? – Viruzzo

+0

Что именно вы пытаетесь сделать в коде? Я думаю, что назначения должны быть this.history = ... как в if, так и в другом. – aishwarya

+0

Моя программа должна работать, даже если она получает нулевой ввод, поэтому я создаю if (history == null) history = new String [] {}; – Swupper

ответ

9

Не вы имеете в виду это?

else this.history = history; 

У вас также есть ошибка в этой строке:

history = new String[]{}; 

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

this.history = new String[]{}; 

Когда я программирую, я никогда не дают локальные переменные такое же имя, как переменные класса. Это только приводит к путанице.

+0

Omg я пытался каждый, я думал, что сделал это тоже: s – Swupper

+0

Не просто upvote так быстро, не задумываясь. Мы также пропустили строку 'history = new String [] {};'. –

+0

@Swupper Я провел 2 часа сегодня, отлаживая случай, когда я написал (в javascript) 'if (item.searchIn == item.searchIn)' вместо 'if (searchIn == item.searchIn)'. Часто при программировании это глупые маленькие ошибки, которые занимают много времени, чтобы разобраться. – Oliver

5

Использовать this.history для ссылки на переменную класса и history для ссылки на аргумент метода.

У вас эти путаницы, и он не устанавливает переменную-член правильно. Когда вы ссылаетесь на history, это означает аргумент метода, а не переменную-член.

public History(String[] history) 
{ 
    if (history == null) 
     this.history = new String[]{}; 
    else 
     this.history = history; 
} 
0

Для присваивания, используйте

this.history = history 

вместо этого. Я думаю, что существует конфликт имен между локальной переменной и атрибутом объекта.

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