J'essaie d'imprimer un message selon qu'un message spécifique précédent a été imprimé ou non. Voici mon code:Essayer de lire la console à partir d'anciennes impressions Java
public class Main {
public static Runnable getRunnable() {
return() -> {
System.out.println("Hello from a thread");
};
}
public static void main(String[] args){
new Thread(getRunnable()).start();
Scanner scanner = new Scanner(System.in);
String name = scanner.next();
if (name.equals("Hello from a thread")) {
System.out.println("Hi!");
} else {
System.out.println("That's not nice");
}
}
}
Je sais que Scanner est probablement pas ici la solution, mais chaque fois que j'essayer quelque chose d'autre comme System.console.readLine()
, ce qui est sans doute pas non plus correct, il imprime un NullPointerException
. Que suis-je censé utiliser ici pour lire les résultats précédents?
MISE À JOUR: Hey, je l'ai encore essayé mais ça n'a pas marché ... je ne sais pas pourquoi encore. Voici mon code mis à jour
public static ByteArrayOutputStream baos = new ByteArrayOutputStream();
public static PrintStream ps = new PrintStream(baos);
public static PrintStream old = System.out;
public static Runnable getRunnable() {
System.out.println("Hello from a thread");
return() -> {
System.setOut(ps);
System.out.println("Hello from a thread");
};
}
public static void main(String[] args){
new Thread(getRunnable()).start();
try {
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException e) {
System.out.println("Somethings wrong!");
}
System.out.flush();
System.setOut(old);
if (baos.toString().equals("Hello from a thread")) {
System.out.println("Hello other thread!");
}
}
}
Peut-être que cela peut vous aider https://stackoverflow.com/questions/8708342/redirect-console-output-to-string-in-java –