main假设我有以下(愚蠢的)java程序,它在和之间来回循环aux,每当y输入a时:
import java.util.Scanner;
public class Minimal {
public static void main(String[] args) {
System.out.println("in main...");
Scanner scanner = new Scanner(System.in);
String s;
while(scanner.hasNextLine()) {
s = scanner.nextLine();
System.out.println(s);
if(s.equals("y")) {
aux();
System.out.println("in main...");
}
}
}
public static void aux() {
System.out.println("in aux...");
Scanner scanner = new Scanner(System.in);
String s;
while(scanner.hasNextLine()) {
s = scanner.nextLine();
System.out.println(s);
if(s.equals("y")) {
return;
}
}
}
}
但是,当我跑步时
$ javac Minimal.java
$ printf "y\ny\ny\ny\ny\ny\ny\n" | java Minimal
在 bash 中,我得到的答案与运行时不同
$ java Minimal
并键入(交互式)y后跟<ENTER>--- 似乎等同于上面自动输入的内容printf。有任何想法吗?