来自InputStream的扫描仪输入

时间:2012-07-25 04:36:57

标签: java console

我正在进行测试驱动开发,这需要我为从用户输入的类编写测试函数。由于控制台输入功能在测试期间停止输入,我使用一个使用字符串的InputStream编写测试。

String str="3\n2\n1\n4\n";
InputStream is = new ByteArrayInputStream(str.getBytes());
assertTrue(app.RunApp(is));

这导致调用函数getChoice(InputStream i),该函数涉及来自扫描器的控制台输入。

public int getChoice(InputStream i) throws IOException {
        Scanner s=new Scanner(i);
        s.useDelimiter("\n");
        String y= s.next();
        int x=Integer.parseInt(y);
        return x;
    }

我希望上面的代码逐个获取字符串中的数字。但是,正在发生的是它正确地获取第一个数字然后,流的位置直接到达流的末尾,这导致NoSuchElementException。请帮助!

1 个答案:

答案 0 :(得分:0)

使用...

String y = s.nextLine();  // That will take the entire line instead of only 1st word