你可以通过调用
System.setIn(InputStream in)来用自己的流替换
System.in。InputStream可以是一个字节数组:
InputStream sysInBackup = System.in; // backup System.in to restore it laterByteArrayInputStream in = new ByteArrayInputStream("My string".getBytes());System.setIn(in);// do your thing// optionally, reset System.in to its originalSystem.setIn(sysInBackup);通过将IN和OUT作为参数传递,不同的方法可以使此方法更具可测试性:
public static int testUserInput(InputStream in,PrintStream out) { Scanner keyboard = new Scanner(in); out.println("Give a number between 1 and 10"); int input = keyboard.nextInt(); while (input < 1 || input > 10) { out.println("Wrong number, try again."); input = keyboard.nextInt(); } return input;}


