我转动了一个调用另一个Java程序并显示其输入的小型java函数。
private static void call() throws Exception
{
int line;
///Other stuff here
Process p2= Runtime.getRuntime().exec("java SelfModifying");
InputStream is = p2.getInputStream();
//p.waitFor();
while ((line = is.read()) != -1) {
System.out.println("result: " + line);
}
Runtime.getRuntime().exit(0);
}
gests调用的prorgam应该返回一个int值:'10' 相反,我得到4行: 结果:49 结果:48 结果:13 结果:10
其他三个值来自哪里?它们是确定性的,但似乎来自输入。当我自己运行程序时,它不返回这3行。
答案 0 :(得分:2)
您正在从流中读取单个字节:
'1'
; '0'
; '\r'
; '\n'
。所以文件的内容是10\r\n
(10,后面是一个windows换行符)。
你应该将is
包裹在扫描仪中:
Scanner scanner = new Scanner(is, "UTF-8");
System.out.println(scanner.nextInt());