我有我要测试的程序:
while(true) {
//useful code
try {
id = inputValue();
} catch (InputMatchException e) {
System.out.println("blahblah");
}
}
public int inputValue() throws IOException {
InputStream inputStream = ???
System.setIn(inputStream);
Scanner scanner = new Scanner(System.in);
return scanner.nextInt();
}
这里我希望 inputValue 在第一次迭代时返回字符串并导致 catch 块并且第二次返回0.是否可以执行?循环有条件退出)不用担心它。
答案 0 :(得分:0)
使用ByteArrayInput/OutputStreams
。
ByteArrayOutputStream out = new ByteArrayOutputStream();
out.write("My string\n".getBytes());
out.write("0".getBytes());
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
然后使用扫描仪从in
读取。
您甚至不需要inputValue()
方法,因为您只需要在设置时调用scanner.nextInt()
。