没有输出,但布尔值是正确的

No output but boolean is right

我正在学习我的软件工程测试,我正在编写代码以便稍后进行测试。测试已经在做我想要的,但我也需要输出。

你能帮我理解为什么输出不起作用吗?

主要Class

import java.io.*;

public class JavaStreamTokenizerExample {
    public static void main(String[] args) throws IOException {
        Reader reader = new StringReader("rvew rwe");
        Tokenizer toke = new Tokenizer(reader);
        boolean result = toke.doTokenizer(toke);
        System.out.println(result);
    }
}

分词器

import java.io.*;

public class Tokenizer {
    private final Reader reader;

    public Tokenizer(Reader reader) {
        this.reader = reader;
    }

    public boolean doTokenizer(Tokenizer readers) throws IOException {
        int intValueOfChar;
        String targetString = "";

        while ((intValueOfChar = readers.reader.read()) != -1) {
            targetString += (char) intValueOfChar;
        }
        if (targetString.length() >= 150) {
            return false;
        }
        if (targetString.equals("") || targetString.equals(" ")) {
            return false;
        } else {
            StreamTokenizer tokenizer = new StreamTokenizer(readers.reader);

            while (tokenizer.nextToken() != StreamTokenizer.TT_EOF) {
                System.out.println(tokenizer.sval);
            }

            return true;
        }
    }

    public Reader getReader() {
        return reader;
    }
}

非常感谢您的帮助!

仔细看看这个循环在做什么:

while ((intValueOfChar = readers.reader.read()) != -1) {
    targetString += (char) intValueOfChar;
}

它实际上是读取每个字符并将其连接到 targetString;即,您已阅读 所有内容。当调用第二个循环时

while (tokenizer.nextToken() != StreamTokenizer.TT_EOF) {
    System.out.println(tokenizer.sval);
}

没有什么可读的了,所以它立即评估为 false 并且执行移动到 return true 语句。

您需要重置 reader。