2014-12-11 67 views
0

我的一部分任务是创建一个charAt()方法,该方法将返回指定索引处的char值。如果索引无效,它将返回索引为零的字符。创建charAt()方法

这是我到目前为止,请记住,我的任务明确指出我不能使用Java的现有字符串方法。

public char charAt(int index) { 
    char a; 
    if (index < 0 || index > 25) 
     a = list[0]; 
    else 
     a = list[index]; 
    return a; 
} 

我不断收到一个错误NullPointerException每当我去调用该方法charAt。是否有任何更正或指示,你推荐?或者这个问题太模糊了?

+3

哪里有你定义的列表?很可能它是空的。 – 2014-12-11 00:22:42

+0

您可以考虑查看有关创意的Java库方法。当然,不要复制它,但它应该提供一些洞察力并让你接触图书馆。 – IdusOrtus 2014-12-11 00:26:57

+0

nullPointerException应该为您提供确切的行号。 25号的数字又来自哪里?这是最大尺寸吗?如果list []数组小于25会怎么样?什么是列表[]尚未分配? – stackoverflowuser2010 2014-12-11 00:30:30

回答

0

你应该考虑到你正在使用,而不是使用“幻数”为您边界检查的实际数据:如果您

if (list.length == 0) { 
    //error, no data 
} 
char back = list[0]; 
if (index >= 0 && index < data.length) { 
    back = list[index]; 
} 
return back; 

在另一方面,作为Juned在评论中指出,有空值并尝试解除引用(通过.[]),您将得到一个NullPointerException

所以一些可能的原因是:

  • list是空
  • 你调用charAt的对象为null,例如myData为空myData.charAt(42)