gpt4 book ai didi

java - CensoredWriter cw = new CensoredWriter(System.out, "whine|whining");

转载 作者:行者123 更新时间:2023-12-02 04:57:05 25 4
gpt4 key购买 nike

我正在使用 Dr.Java 来执行此构造函数。当我在交互框中输入以下内容时

CensoredWriter cw = new CensoredWriter(System.out, "whine|whining");

cw.print("No whining")

它返回“No 提示”,但根据我的构造函数,正确的答案应该是“No %!^*#@”。这里有什么问题吗?

public class CensoredWriter extends PrintWriter {

String censored;

public CensoredWriter(OutputStream o, String c) {
super(o);
this.censored = c;
}

public CensoredWriter(File f, String c) throws Exception {
super(f);
this.censored = c;
}

public CensoredWriter(String s, String c) throws Exception {
super(s);
this.censored = c;
}

public String transform(String s) {
String a = s.replace(censored, "%!^*#@");
return a;
}

@Override
public void print(String s) {
transform(s);
super.print(s);
flush();

}

@Override
public void println(String s) {
print(s);
flush();
}
}

最佳答案

实际上有两个问题。

  • replace 只会替换完整的字符串匹配。 replaceAll实际上允许您使用常规表达式。

  • 您没有将 transform 调用的结果存储在 print 方法中,因此它会掉到地板上。无论如何,我个人都会内联该调用,因为无论如何您都会得到一个新的字符串:

    @Override
    public void print(String s) {
    super.print(transform(s));
    flush();
    }

关于java - CensoredWriter cw = new CensoredWriter(System.out, "whine|whining");,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28655129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com