У меня есть две программы Java, называется А и В. выглядит следующим образомПолучение ввода/вывода из программы Java работает в другой программе Java
Scanner deusex = new Scanner(System.in);
ArrayList<String> list = new ArrayList<String>();
String again = "Y";
while (again == ("Y"))
{
out.println("Enter a string.");
String user1 = deusex.next();
list.add(user1);
out.println("Input again? [Y/N]");
again = deusex.next();
if (again.equalsIgnoreCase("Y"))
again = "Y";
}
out.println("Your elements: " + list);
out.println("Delete elements? [Y/N]");
String y = deusex.next();
if (y.equalsIgnoreCase("y"))
{
String again1 = "Y";
out.println("Printing outputs...");
out.println(list);
while (again1 == ("Y"))
{
out.println("Enter index of element to delete [0,1,2...]");
int user3 = deusex.nextInt();
list.remove(user3);
out.println("Printing outputs...");
out.println(list);
out.println("Input again? [Y/N]");
again = deusex.next();
if (again.equalsIgnoreCase("Y"))
again1 = "Y";
else System.exit(0);
}
}
else { out.println("Bye."); };
}
}
Я закачанный А в .txt на Google Drive. Моя программа B написана для загрузки файла, затем сохраните его как .java-файл. Затем я скомпилирую его и попытаюсь запустить. Это часть кода B, что имеет важное значение:
System.out.println("Enter anything to compile and run.");
String anything1 = Gooch.next();
String line = null;
try
{
Process pleasecompile = new ProcessBuilder("javac", "A.java").start();
Process pleaserun = new ProcessBuilder("java", "A").start();
BufferedReader input = new BufferedReader(new InputStreamReader(pleaserun.getInputStream()));
BufferedWriter output= new BufferedWriter(new OutputStreamWriter(pleaserun.getOutputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
output.write(300);
}
pleaserun.waitFor();
input.close();
}
catch (Exception e)
{
e.printStackTrace();
}
Выполнение этого кода для B выводит только первую строку A. Я хочу быть в состоянии запустить в полном объеме и получить и дать входы и выходы , Я догадался, что мне нужно манипулировать буферизованными читателями некоторыми циклами или процессами, чтобы сделать это, но я понятия не имею, как это сделать.
Я знаю, что если я просто скомпилирую A.java с помощью процесса pleasecompile, я могу сразу вызвать класс после использования чего-то вроде A.main (String [0]) ;. Проблема в том, что файл A.class не существует во время компиляции, только после того, как он был загружен и скомпилирован сам, поэтому моя программа B дает мне не удается найти ошибку символа для A.main при компиляции. Мой вопрос заключается в том, могу ли я установить что-то, что вызовет класс для меня после компиляции A в B без ошибки, если не прибегать к манипулированию читателями.
Используйте '.equals' для сравнения строк, а не' '== : 'while (" Y ".equals (снова))' –