该代码不能运行的原因是因为在定义StringReplacement类的时候,它是一个静态内部类,而在main方法中直接调用StringReplacement.replacePlaceholders()方法是不被允许的。我们可以将StringReplacement类定义为独立的类,或者将replacePlaceholders()方法定义为静态方法,这样就可以直接调用了。修改后的代码如下:

import java.util.*;

public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 原串 * @param arg char字符型一维数组 需替换数组 * @return string字符串 */ public static String replacePlaceholders(String input, String[] params) { int paramIndex = 0; // 参数索引 int placeholderIndex = input.indexOf('%s'); // 占位符索引 StringBuilder result = new StringBuilder();

    while (placeholderIndex != -1) {
        // 将占位符之前的部分添加到结果字符串中
        result.append(input.substring(0, placeholderIndex));
        // 将参数添加到结果字符串中
        result.append(params[paramIndex]);

        // 更新索引和参数
        input = input.substring(placeholderIndex + 2);
        paramIndex++;
        placeholderIndex = input.indexOf('%s');
    }

    result.append(input);

    return result.toString();
}

public static void main(String[] args) {
    String input = 'A%sC%sE';
    String[] params = { 'B', 'D' };
    String result = replacePlaceholders(input, params);
    System.out.println(result);
}

} 现在,该代码可以正常运行并输出结果为'ABCDE'。

Java 静态内部类调用问题及解决方案

原文地址: https://www.cveoy.top/t/topic/pbFO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录