我得到的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 –