没有输出,但布尔值是正确的
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。
我正在学习我的软件工程测试,我正在编写代码以便稍后进行测试。测试已经在做我想要的,但我也需要输出。
你能帮我理解为什么输出不起作用吗?
主要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。