java - Testdome - DecoratorStream Java

标签 java arrays

我一直在尝试解决链接here上的问题。我的解决方案在 testdome 上遇到了 stackoverflow 错误,尽管当我在 IDE 中运行它时它可以工作。

我的解决方案:

private static boolean prefixused;

@Override
public void write(byte[] b, int off, int len) throws IOException {
    byte [] prefixarr = new byte [prefix.length()+b.length];

    if(prefixused)
        write(b, 0, b.length);
    else
        for(char c : prefix.toCharArray()){
            write((int)c);
        }

        write(prefixarr, 0, prefixarr.length);
        prefixused = true;
}

最佳答案

问题是您正在调用 write 而不是stream.write(这是任务的一部分)。如果是这样的话,它不应该抛出错误:

@Override
public void write(byte[] b, int off, int len) throws IOException {
    if(prefixused)
        stream.write(b, 0, b.length);
    else
        for(char c : prefix.toCharArray()){
            stream.write((int)c);
        }

    stream.write(b, off, len);
        prefixused = true;
}

但是这个解决方案通过了所有测试并且更加优雅:

@Override
public void write(byte[] b, int off, int len) throws IOException {
    if (prefix != null) {
        stream.write(prefix.getBytes(StandardCharsets.UTF_8));
        prefix = null;
    }
    stream.write(b, off, len);
}

关于java - Testdome - DecoratorStream Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54525933/

相关文章:

java - 动态迭代内部包含两个索引的数组列表

java - swing 将数据从 mysql 数据库检索到文本字段

c - 按特定顺序对三个数字进行排序

PHP - 如何判断多维数组中的所有相邻元素是否存在?

arrays - VBA中的元组列表?

java - java中可以通过反射设置字段的 transient 属性/标志吗?

java - Grails:将 jconsole 连接到指定端口上的本地进程

java - Java 中的强制转换怎么不起作用?

Javascript:解析一个txt文件,将数据传递给一个数组

javascript - Array.concat.apply() 在 chrome 和 firefox 中不同