当前位置: 首页 > 知识库问答 >
问题:

String.Replace()中的java.lang.NullPointerException[duplicate]

李甫
2023-03-14

我觉得我应该给出一个代码的概念。我遇到了这个问题,我需要编写两个函数,一个是find(),如果它在给定字符串中找到子字符串的索引,它将返回一个布尔值。该函数应该“在索引数组中保存索引值”。另一个方法是replace(),它用新单词替换所有搜索的单词,然后输出新字符串。需要输出匹配词的索引号。

import java.util.Scanner;

public class findAndReplace {

    public static void main(String[] args) {
        String text;
        String find;
        String replace = null;
        String result;
        int index[];

        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter the line: ");
        text = scanner.nextLine();
        System.out.print("Enter the string to find: ");
        find = scanner.nextLine();
        System.out.print("Enter the string to replace with: ");
        find = scanner.nextLine();

        find(text, find);
        String result1 = replace(text, find, replace); //!!NUllPointerException             
        System.out.print(result1);
    }

    public static boolean find(String text, String find){ //method return a Boolean value if it finds the index of the word that we are trying to find. Saves the index value in the index array.
        boolean b = false;
        int index_int;
        int index[] = null;

        if (text.indexOf(find)>=0){
            b = true;
            int i = 0;
            do{ 
                index_int = text.indexOf(find);
                index[i]=index_int;
                i++;
                text.replace(text.charAt(index_int), '0');
                System.out.print(index_int);
            } while (text.indexOf(find)>=0);
        }
        return b;
    }

    public static String replace(String text, String find, String replace){ //method replaces all search words with new word and prints.
        String result;
        result = text.replace(find, replace); //!!NUllPointerException
        return result;
    } 
}

现在的问题是,我在注释行处发现nullpointer异常。你能告诉我问题出在哪里吗?我搜索错误无济于事。

共有1个答案

邹昊
2023-03-14

您的替换为空;你分配找两次。

 类似资料:
  • 当SonarQube试图分析这段代码时,我有一个NPE: A.java null

  • 我有一个HQL查询,通过传递一个列表来检查某些细节!精确的数组列表。下面是HQL查询。 下面是我用来传输两个参数数组列表的代码。 对于给定的参数,我从getQuery行中得到一个空指针异常!在第一次运行时,search chCriteria参数为空,因此其他参数将被执行!我不知道空指针异常发生在哪里! 非常感谢。 这是我的堆栈跟踪!

  • 问题内容: 我想替换String输入中的一些字符串: 如您所见,这种方法不是最佳方法,因为每次我必须搜索要替换的部分时,等等,并且字符串是不可变的…而且输入很大,这意味着要考虑一些性能问题。 有没有更好的方法来减少此代码的复杂性? 问题答案: 尽管与相比是一个巨大的改进,但它 离 优化还差 很远 。 问题在于,如果替换的长度与可替换部分的长度不同(适用于我们的情况),则可能必须分配更大的内部数组,

  • 当我试图获取控制器中的所有MyClassA对象时,我得到以下异常: 最后,我的服务实现MyClassaImpl: 我的冬眠版本是4.3.11。最终版本。如果您需要任何其他信息,请告诉我!谢谢

  • 2017/08/17 16:57:42 ERROR-jmeter.save.saveService:转换错误com.thoughtworks.xstream.conversionexception:com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.jsonpathextractor:com.atlantbh.jmeter.jsonuti

  • 问题内容: 我根据另一个问题编写了一个非常简单的代码,它是: 丢给我一个错误 java.lang.NullPointerException第5和17行 我不知道我在做什么错。 问题答案: 无法自动拆箱为原始值,当您尝试与进行比较时会发生这种情况。在 类型为,因此左侧操作数也必须为。您正在传入,这是一个对象,但可以自动拆箱到。 因此,这相当于 显然,如果是,则以上抛出。 为了避免自动拆箱的隐藏陷阱,