我正在尝试制作一个完整的Java程序来运行Python程序。Python程序如下:
print('Enter two numbers')
a = int(input())
b = int(input())
c = a + b
print(c)
如果我运行这段代码,终端会显示类似以下内容:
Enter two numbers
5
3
8
现在,我希望在Java中执行此代码时得到相同的输出。以下是我的Java代码:
import java.io.*;
class RunPython {
public static void main(String[] args) throws IOException {
String program = "print('Enter two numbers')\na = int(input())\nb = int(input())\nc = a + b\nprint(a)\nprint(b)\nprint(c)";
FileWriter fileWriter = new FileWriter("testjava.py");
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
bufferedWriter.write(program);
bufferedWriter.close();
Process process = Runtime.getRuntime().exec("python testjava.py");
InputStreamReader inputStreamReader = new InputStreamReader(process.getInputStream());
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(process.getOutputStream());
InputStreamReader read = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(read);
String output;
while (process.isAlive()) {
while (!bufferedReader.ready());
System.out.println(bufferedReader.ready());
while (!(output = bufferedReader.readLine()).isEmpty()) {
System.out.println(output);
}
bufferedReader.close();
if (process.isAlive()) {
outputStreamWriter.write(in.readLine());
}
}
}
}
但是,在运行这个程序时,只显示了第一行并接受了第一个输入。之后,程序就没有响应了。 我犯了什么错误?有什么解决方案吗?
Process p = new ProcessBuilder("python", "myScript.py", "firstargument").start();
的方法将参数从Java传递到Python脚本中。但是,无论如何,Jython都可以更清晰地完成这两个任务。 - Eno Gerguri