java - 空指针异常/数组

标签 java arrays nullpointerexception

我在评论“NPE HERE”的两行中得到了 NPE

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?根据我的理解,我的字符串数组具有空值,当我尝试使用 name[i] 访问数组时,会导致 NPE。 我尝试用虚拟变量(值为“antinull”的字符串)填充数组的其余部分,但这并没有解决任何问题,而且即使是一个,也显然不是一个优雅的解决方案。

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

最佳答案

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

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

关于java - 空指针异常/数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35823482/

相关文章:

arrays - 有没有办法在用户输入特定数字之前创建数组?

javascript - 我该如何修复此代码?它使用 3 个独立的函数,一个用于添加到数组,一个用于排序,一个用于显示。 JavaScript

java - 在 datasnapshot 中设置 Boolean 设置为 true 后返回 null

java - 使 TreeMap 比较器容忍 null

java - 为什么 IntelliJ IDEA 给出异常建议?

java - 为什么 Arrays.asList 返回一个固定大小的列表?

java - 覆盖 getPreferredSize() 会破坏 LSP

Java 6 排序数组

java - 将模型从 Controller 传递到 View

java - 无法创建ViewModel的实例