[我在尝试借助数组替换单词时遇到NullPointerException

问题描述 投票:0回答:1

我正在尝试一个项目,应该将一个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的函数用下划线替换字符串。这是一个好主意吗?

非常感谢您的帮助。谢谢。

java error-handling nullpointerexception
1个回答
0
投票

看起来Missing_Word为空。 Get_Word()应该返回一个值,该值将在每次找到下划线时分配给Missing_Word变量。

Missing_Word = Get_Word(); 
New_Current_Statement = Current_Statement.replaceAll("___", Missing_Word);
© www.soinside.com 2019 - 2024. All rights reserved.