Java 需要对代码发表意见吗

Java 需要对代码发表意见吗,java,string,nullpointerexception,logcat,Java,String,Nullpointerexception,Logcat,我知道我已经问过NullPointerException,但我在代码中发现了另一个错误,无法找到解决它的方法。提前谢谢。代码如下: 03-07 14:11:13.510: E/AndroidRuntime(897): Process: br.com.agendadecontatos, PID: 897 03-07 14:11:13.510: E/AndroidRuntime(897): java.lang.NullPointerException 03-07 14:11:13.510: E/An

我知道我已经问过NullPointerException,但我在代码中发现了另一个错误,无法找到解决它的方法。提前谢谢。代码如下:

03-07 14:11:13.510: E/AndroidRuntime(897): Process: br.com.agendadecontatos, PID: 897
03-07 14:11:13.510: E/AndroidRuntime(897): java.lang.NullPointerException
03-07 14:11:13.510: E/AndroidRuntime(897): at br.com.agendadecontatos.ProvedorDeContatos.toString(ProvedorDeContatos.java:50)
让我说得更清楚一点,因为有些人说我的问题没有用或类似的东西。我是Java编程新手,真的不知道如何解决这个问题。我希望有人能理解我的处境。我只是请求帮助。在否决投票之前,说出缺失的内容。谢谢

 @Override
    public String toString() 
    {
          // TODO Auto-generated method stub          
          return Nome + "-"  + Telefones.get(0);   // <- the error is here
          //the error is here
    }
@覆盖
公共字符串toString()
{
//TODO自动生成的方法存根

返回Nome+“-”+Telefones.get(0);//这听起来像是
Telefones
变量在调用
get
时为空。这就是调用
get
失败并抛出异常的原因

NullPointerException
通常意味着某个对象试图调用一个方法或访问一个空变量上的字段。一旦找到了发生此情况的行,请仔细查看该行上正在使用的变量。在这种情况下,有两个:
Nome
Telefones

Nome
没有问题,因为它只是用
+
连接到另一个字符串,而这种字符串连接不会引发
NullPointerException
(而不是将单词“null”放在字符串中)。因此,即使
Nome
为null,也不会导致异常


这就剩下了
Telefones.get(0)
调用。尝试在null对象上调用方法总是会导致
NullPointerException
,而该行上没有其他任何东西会导致异常,因此必须是这样。

Do System.out.println(Nome);System.out.println(Telefones)并告诉我您在控制台中看到了什么。仍然会出现“不幸的是,应用程序已停止”的消息。似乎Nome或Telefones都是null。您是否创建过它们??(请记住,声明与分配/创建不同。声明的对象引用默认初始化为null。)是的,我做了。看看第9行“private List Telefones;”。我将“return Nome+”-“+Telefones.get(0)”;改为“return”Nome-“+this.Nome+”,Telefones-“+this.Telefones;”,应用程序开始运行了!这让我觉得变量声明中不应该有问题。问题可能在这一行的代码序列上。
package br.com.agendadecontatos;

import java.util.List;
public class ProvedorDeContatos
{
      private String ID;
      private String Nome;
      private String Sobrenome;
      private List<ProvedorDeContatos> Telefones;     

      public String getID()
      {
          return ID;
    }
    public void setID(String string)
    {
          ID = string;
    }
    public String getNome() 
    {
          return Nome;
    }
    public void setNome(String nome) 
    {
          Nome = nome;
    }     
    public List<ProvedorDeContatos> getTelefones() 
    {
          return Telefones;
    }
    public void setTelefones(List<ProvedorDeContatos> telefones) 
    {
          Telefones = telefones;
    }
    public String getSobrenome() 
    {
          return Sobrenome;
    }
    public void setSobrenome(String sobrenome) 
    {
          Sobrenome = sobrenome;
    }    

    //Metodo sobreescrito para que não aparece o nome do componente na listView

    @Override
    public String toString() 
    {
          // TODO Auto-generated method stub          
          return Nome + "-"  + Telefones.get(0);
    }

    //função criada após o erro com o setTelefones na classe Telefone

    public void setTelefones(String telefones)
    {
        //TODO Auto-generated method stub

    } 
}