空指针异常/数组

时间:2016-03-06 05:27:28

标签: java arrays nullpointerexception

我在我评论的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

我的目录中有另外两个类,TextFileInput和我的GUI类(你们还需要在那里查看代码吗?)。 我的代码可能有更多的错误,不确定,因为我还不是很熟悉Java并且正在努力学习。任何其他建议将不胜感激。

无论如何,导致NPE的原因是什么?根据我的理解,当我尝试使用name [i]访问数组时,我的字符串数组具有导致NPE的空值。 我尝试用假人填充剩余的阵列(值为&#34的字符串; antinull&#34;)但是这并没有解决任何问题,即使它是一个优雅的解决方案也是如此之一。

我只需要一个project1类和一个GUI类。目标是接收带有字符串的文件,检查字符串是否都是字母,并将实际单词发送到GUI中的文本区域。然后按大小排序并将订购的版本发送到其他文本区域。不发送字符串的字符串将被输出到控制台。 Project1应该有一个构造函数,它接受一个字符串参数。

2 个答案:

答案 0 :(得分:1)

当您致电preSort.append(...)时,您正在从变量(preSort)调用方法,该变量未初始化,因此null会导致NullPointerException。例如,如果您在main方法中初始化preSort,事情会更好。

您还应该考虑正确缩进代码并使用正确的Java命名标准。变量应该是camelCased,而不是以大写字母开头。

答案 1 :(得分:0)

我认为你在调用enterFirst(Array)时没有出现空指针错误。循环甚至不应该执行,因为Array的第一个值是null。但是您可能会收到空指针错误,因为preSort变量不引用任何对象。

尝试:

static TextArea preSort = new TextArea(5, 20);

static TextArea postSort = new TextArea(5, 20);

相关问题