2015-09-29 3 views
0

Привет У меня есть этот массив класса Costum я сделал называется запись, но каждый раз, когда я пытаюсь установить текст одного из записи в массиве я получаю ошибкуметод SetText и массив

Entry [] myEntries = new Entry[length];  

for(int i = 0; i < myEntries.length; i++) 
{ 
    myEntries[i].setText(new String("")); 
} 

Это мой вход класс

public class Entry 
{ 
    int date; 
    String text; 

    Entry(int date) 
    { 
    this.date = date; 
    } 

    public void setText(String text) 
    { 
    this.text = text; 
    } 

    public String getText() 
    { 
    return text; 
    } 

    public int getDate() 
    { 
    return date; 
    } 

} 
+4

Что ошибка, которую вы получили? –

+0

Запись не имеет примитивного типа, поэтому она будет инициализирована нулевыми значениями и не будет настраивать значения, которые вы пытаетесь выполнить с помощью нулевого значения, поэтому вы получите исключение, исключение из null указателя –

ответ

3

Вы получите NULL POINTER EXCEPTION. Потому что перед использованием каждого элемента необходимо инициализировать каждый элемент на итерации. Делайте, как следующие

for(int i = 0; i < myEntries.length; i++) 
{ 
myEntries[i] = new Entry(); 
myEntries[i].setText(new String("")); 
} 

Наряду с этим также необходимо создать конструктор по умолчанию использовать вышеуказанную версию или передать объект даты, чтобы использовать свою собственную версию конструктора

0

Вы должны назначить объект ввода в каждый элемент массива, иначе вы получите NullPointerException.

Integer[] myEntries = new Integer[5]; 

// System.out.println(Arrays.toString(myEntries)); 
// above commented code prints "[null, null, null, null, null]" 

for(int i = 0; i < myEntries.length; i++) { 
    myEntries[i] = new Entry(); 
    myEntries[i].setText(new String("")); 
} 

Примечание: Для того чтобы это работало, необходимо конструктор по умолчанию в Entry классе.

-3

Попробуйте заменить новый String ("") вместо переменной.

Если это не поможет, показать весь код или ошибки вы получаете, когда вы пытаетесь скомпилировать

+0

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

0
public class EntryMain { 
    public static void main(String[] args) { 
     Entry [] myEntries = new Entry[10];  

     for(int i = 0; i < myEntries.length; i++) 
     { 
      try { 
       myEntries[i].setText(new String("")); 
      } catch (Exception e) { 
       myEntries[i] = new Entry(); 
       myEntries[i].setText(new String("")); 
      } 

     } 
    } 
} 

Entry.java

public class Entry 
{ 

    Entry() 
    { 

    } 

    int date; 
    String text; 

    Entry(int date) 
    { 
    this.date = date; 
    } 

    public void setText(String text) 
    { 
    this.text = text; 
    } 

    public String getText() 
    { 
    return text; 
    } 

    public int getDate() 
    { 
    return date; 
    } 

} 

так myEntries [] пуст, и вы пытаетесь чтобы прочитать некоторый индекс, он даст вам исключение с помощью null-указателя.

Как указано выше, многие люди упомянули, если вы прямо назначили новую запись(), она переопределит предыдущий объект, и вы потеряете данные.

так, попытайтесь получить доступ к позиции в myEntries [], если исключение происходит затем назначить новую запись() для myEntries [] и SetText («whateever»)

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