【发布时间】:2015-12-14 04:12:08
【问题描述】:
我是编程/编码的新手,并且已经在学校的一个项目上停留了几天。目标是获取一个充满单词的数组(每个位置是一个不同的单词)并按字母顺序对其进行排序。我已经尝试过对堆栈溢出进行一些研究,但是在我找到的一些示例之后我遇到了一些麻烦。类和驱动程序(如果你愿意的话,我使用的是两部分设置)都编译得很好,没有问题。当我尝试从我的驱动程序中使用alphaSort 时,就会出现问题。我收到下面标记的行的空指针异常。过去我在处理这些异常时遇到过一些麻烦,所以我确信这是我忽略的一些小问题。然而,如前所述,我还不够流利地使用 java 语法来捕捉这样的小错误。
我想我应该只包含整个方法,以防我的错误出现在排序部分之前的开头。到目前为止我所拥有的(我在堆栈溢出中发现了这个):
public void alphaSort()
{
String alphaList[] = new String[wordList.size()];
int count=0;
//puts wordList into alphaList for easier sorting
while(count<wordList.size()-1)
{
alphaList[count]=wordList.get(count);
count++;
}
int shortestStringIndex;
//sort begins here
for(int j=0; j<alphaList.length -1; j++)
{
shortestStringIndex = j;
for(int i=j+1; i<alphaList.length; i++)
{
if(alphaList[i].trim().compareTo(alphaList[shortestStringIndex].trim())<0) //null pointer exception points here
{
shortestStringIndex = i;
}
}
if(shortestStringIndex !=j)
{
String temp = alphaList[j];
alphaList[j] = alphaList[shortestStringIndex];
alphaList[shortestStringIndex]=temp;
}
}
//prints out results
count=0;
while(count<alphaList.length)
{
System.out.println(alphaList[count]);
alphaOut.print(alphaList[count]);
count++;
}
}
任何帮助将不胜感激。请尽可能彻底地给出答案(正如我所说,我是一个java新手)。谢谢:)
编辑:为了测试空值(我假设我的数组列表中的点是空白的)我做了以下方法:
public void isNull()
{
int count=0;
while(count<wordList.size()-1)
{
if((wordList.get(count)).equals(""))
{
System.out.println("null");
break;
}
else
{
System.out.println("nothing yet");
}
count++;
}
}
while 循环从未提前中断,我的方法运行完成。
【问题讨论】:
-
有趣的学习方式..sorting-algorithms.com
-
在调试这类问题时非常有用的一点是当错误发生时您在控制台中获得的堆栈跟踪。它通常会说
NullPointerException,并给你一个发生错误的行号。如果你查看你的代码和它提到的行号,通常只有一两个变量在那里起作用,然后你可以推断出哪个是空的,以及为什么会发生这种情况。 -
空白字符串与
null不同。空引用将是一个根本不包含字符串值的变量。例如String a = null。要测试isNull,只需说if (string == null)。 -
谢谢。不知道这个。
标签: java sorting nullpointerexception alphabetical