我正在尝试一个项目,应该将一个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);
}
}
这里是错误消息:
线程“ main”中的异常java.lang.NullPointerException在java.base / java.util.regex.Matcher.appendExpandedReplacement(Matcher.java:1015)在java.base / java.util.regex.Matcher.appendReplacement(Matcher.java:998)在java.base / java.util.regex.Matcher.replaceAll(Matcher.java:1182)在java.base / java.lang.String.replaceAll(String.java:2126)在Main.main(Main.java:51)上的Main.KMP_Algorithm(Main.java:77)
P.S。我正在尝试将字符数组转换为字符串,然后使用一个名为replaceAll的函数用下划线替换字符串。这是一个好主意吗?
非常感谢您的帮助。谢谢。
看起来Missing_Word
为空。 Get_Word()
应该返回一个值,该值将在每次找到下划线时分配给Missing_Word
变量。
Missing_Word = Get_Word();
New_Current_Statement = Current_Statement.replaceAll("___", Missing_Word);