I am trying to make a full-fledged Java program that runs a python program. The python program is as follows:
print('Enter two numbers')
a = int(input())
b = int(input())
c = a + b
print(c)
If I execute this code, the terminal looks something like this:
Enter two numbers
5
3
8
Now, I want the same output when executing this code from Java. Here is my Java code:
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());
}
}
}
}
But while running this program, only the first line is displayed and the first input is taken. After that, the program does not respond. What mistake am I making? And what is the solution?