java - 当我尝试借助数组替换单词时,出现 NullPointerException

标签 java error-handling nullpointerexception

我正在尝试处理一个项目,我应该用另一个 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/

相关文章:

java - 如果相同的方法重载和覆盖,Java 中的意外多态行为

c++ - 如何使用 FormatMessage 函数填充系统错误消息的 va_list?

internet-explorer - IE9中的脚本错误

java - 在 Websphere Liberty Profile 中的 J2EE 应用程序中使用托管 Bean 和注入(inject)

java - 如何在 HtmlUnit 测试用例中添加用户名/密码身份验证信息?

error-handling - Spring 集成错误处理 - 如何访问原始错误消息的历史记录?

android - Activity_main.xml java.lang.nullpointerException添加数字时钟android

java - "AWT-EventQueue-0"java.lang.NullPointerException 中的异常

android - 使用 ProGuard 混淆后应用程序崩溃

java慢: entropy related issue