我得到的2线NPE我评论说:“NPE HERE”空指针异常/阵列
import javax.swing.*;
import java.awt.*;
public class Project1{
static TextArea preSort, postSort;
static String[] Array = new String[20];
public static void main(String[] args) {
Project1GUI myFrame = new Project1GUI("Project1GUI");
readStringFromFile("filename.txt");
enterFirst(Array); // NPE HERE
selectionSort(Array);
enterSecond(Array);
}
public static void enterFirst (String[] name){ // NPE HERE
for(int i=0;i<name.length&&name[i]!=null;i++)
preSort.append(name[i]+" ");
}
public static void enterSecond (String[] name){
for(int i=0;i<name.length&&name[i]!=null;i++)
postSort.append(name[i]+" ");
}
public static void selectionSort (String[] name){
for(int i=0; i<name.length-1&&name[i]!=null;i++){
int indexLowest=i;
for (int j=i+1; j<name.length&&name[j]!=null;j++)
if(name[j]<name[indexLowest])
indexLowest=j;
if(name[indexLowest]!=name[i]){
String temp = name[indexLowest];
name[indexLowest]=name[i];
name[i]=temp;
}//if
}//for
}//method selectionSort
public static boolean isOkay (String name){
char[] chars = name.toCharArray();
for(int i=0; i<chars.length; i++){
if(!Character.isLetter(chars[i])){
return false;
}
}
return true;
} //isOkay
public static void readStringFromFile(String fileName){
TextFileInput inFile = new TextFileInput(fileName);
String line;
line = inFile.readLine();
int index = 0;
while (line!=null) {
if(isOkay(line))Array[index++]=line;
else System.out.println(line);
line = inFile.readLine();
}//while
inFile.close();
}
} //Project1
我有另2班在我的目录,TextFileInput和我的GUI类(做你们需要看那里的代码呢?)。 我的代码中可能有更多的错误,不确定,因为我还不是很熟悉Java,并且正在努力学习。任何其他意见将不胜感激。
无论如何,是什么造成NPE?根据我的理解,我的字符串数组有空值,当我尝试访问名为[i]的数组时,会导致NPE。 我尝试用虚拟填充我的数组的其余部分(字符串值“antinull”),但没有解决任何问题,并且显然不是一个优雅的解决方案,即使它是一个。
我只需要有一个project1类和一个GUI类。目标是获取带有字符串的文件,检查字符串是否全是字母,并将实际字词发送到GUI中的文本区域。然后按大小进行排序并将订购的版本发送到其他文本区域。不是单词的字符串被发送以输出到控制台。 Project1应该有一个构造函数,它接受一个字符串参数。
你永远不会初始化'preSort' ...'preSort.append'抛出一个NullPointerException –