我尝试将字符串发送到我的InputStream:
String _source = "123";
InputStream in = new ByteArrayInputStream(_source.getBytes("UTF-8"));
tempLab2.readR(in);
String _source2 = "321";
in.read(_source2.getBytes());
_myClass.readR(in);
Run Code Online (Sandbox Code Playgroud)
当我创建 newByteArrayInputStream并设置_source为参数时,一切正常。我的方法 readR 不等待任何\n或EOF字符并读取123.
请输入 R:
回复: 123
readR 方法:
public void readR(InputStream inpSteram) {
Scanner tScanner = new Scanner(inpSteram);
System.out.println("Please enter R:");
_R = tScanner.nextDouble();
System.out.println("R: " + _R);
}
Run Code Online (Sandbox Code Playgroud)
但如果我发送_source2,in.read(_source2.getBytes())所以我Scanner正在等待,我只看到
请输入 R:
有任何想法吗?
线
in.read(_source2.getBytes());
Run Code Online (Sandbox Code Playgroud)
不会向输入流添加新信息,而是将其清空(如果有更多数据)。所以输入流用完了。
您只需要在下一次调用 readR 之前创建一个新的输入流。所以:
String _source2 = "321";
in = new ByteArrayInputStream(_source2.getBytes("UTF-8"));
_myClass.readR(in);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5422 次 |
| 最近记录: |