gpt4 book ai didi

java - 空指针异常/数组

转载 作者:行者123 更新时间:2023-12-01 10:17:15 28 4
gpt4 key购买 nike

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

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com