setText方法和数组

时间:2015-09-29 10:29:48

标签: java arrays loops getter-setter

嗨我有一个我称为入口的costum类数组,但每当我尝试设置数组中某个条目的文本时,我都会收到错误

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 :(得分:3)

您将获得 NULL POINTER EXCEPTION 。因为在使用每个元素之前需要在迭代中初始化每个元素。请执行以下操作

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

除此之外,您还需要创建默认构造函数以使用上述版本或传递日期对象以使用您自己的构造函数

答案 1 :(得分:0)

您应该为每个数组元素分配Entry对象,否则您将获得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课程中使用默认构造函数。

答案 2 :(得分: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 []是空的并且你试图读取一些索引,它会给你空指针异常。

如上所述,如果您直接指定一个新的Entry(),它会覆盖上一个对象而您将丢失数据。

所以,如果发生异常,尝试访问myEntries []中的位置,然后将新的Entry()分配给myEntries []和setText(&#34; whateever&#34;)

答案 3 :(得分:-3)

尝试更换 改为使用变量的新String(“”)。

如果这没有帮助,请显示尝试编译时获得的整个代码或错误