我正在尝试处理一个项目,我应该用另一个 txt 文件中缺少的单词替换一个 txt 文件中的“___”。我找到了由指针 j 表示的缺失单词的位置。现在我正在开发一个函数,该函数将从文件中获取丢失的单词并将其放在正确的位置。不幸的是,由于某种原因,我收到 NullPointerException 错误。
这是必要的全局变量
public static char Missing_Word_Characters[] = new char[32];
public static char Underscore = '_';
这是查找丢失单词位置的部分
while(i < Length_of_the_Script)
{
if(Current_Statement.charAt(j) == The_Truman_Show_Script.charAt(i))
{
i++;
j++;
}
else if(Current_Statement.charAt(j) != The_Truman_Show_Script.charAt(i) && Current_Statement.charAt(j) == Underscore)
{
//Replace the underscores with the word
System.out.println("There is a missing word at " + i);
Get_Word();
New_Current_Statement = Current_Statement.replaceAll("___", Missing_Word);
System.out.println(New_Current_Statement);
break;
}
这是从 txt 文件中逐个字符获取缺失单词的函数。
static void Get_Word()
{
int Word_Pointer = i;
if(The_Truman_Show_Script.charAt(Word_Pointer) != WhiteSpace)
{
//get the character and increment Word_Pointer
Missing_Word_Characters[Missing_Character] = The_Truman_Show_Script.charAt(Word_Pointer);
Missing_Character++;
Word_Pointer++;
}
else
{
Missing_Word = new String(Missing_Word_Characters);
}
}
这是错误消息:
Exception in thread "main" java.lang.NullPointerException at java.base/java.util.regex.Matcher.appendExpandedReplacement(Matcher.java:1015) at java.base/java.util.regex.Matcher.appendReplacement(Matcher.java:998) at java.base/java.util.regex.Matcher.replaceAll(Matcher.java:1182) at java.base/java.lang.String.replaceAll(String.java:2126) at Main.KMP_Algorithm(Main.java:77) at Main.main(Main.java:51)
附注我正在尝试将字符数组转换为字符串,然后使用名为replaceAll 的函数将字符串替换为下划线。这是一个好主意吗?
非常感谢您的帮助。 谢谢。
最佳答案
看起来 Missing_Word
为空。 Get_Word()
应返回值,每次找到下划线时该值都会分配给 Missing_Word
变量。
Missing_Word = Get_Word();
New_Current_Statement = Current_Statement.replaceAll("___", Missing_Word);
关于java - 当我尝试借助数组替换单词时,出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59201349/