使用bash智能输入Java程序

时间:2017-09-11 14:33:32

标签: java bash automated-tests

我正在制作一个bash脚本,用于自动评分学生作业,并且对如何处理随机数字感到难过。

学生程序输出如下所示,等待int输入:

4 + 6 =

我的脚本需要生成正确的输入以确保其程序正确运行并检查响应。问题是数字并不总是4和6,而是1到20之间的任意一组随机数。

因此,如果程序打印“5 + 7 =”,我的脚本需要输入12,但如果打印“20 + 12 =”,我的脚本需要输入32.有没有办法让bash脚本执行这个?我不知道如何计算动态响应。我已经尝试过coproc命令,但它没有按我喜欢的方式工作。

谢谢!

3 个答案:

答案 0 :(得分:0)

我建议您将mathexpression拆分成碎片并将它们添加到堆栈中。看起来像这样:| 4 | + | 6 | 然后你可以尝试将数字转换为实数。如果它失败,那么你可以问它是否是+, - ,*,/等运算符。 如果你已经这样做了,那么只需按下堆栈并计算它。如果你计算了它,那么将它与学生的输入进行比较。

或者简单的方法: 您必须保存随机数并在生成后计算它们。

很抱歉,如果我完全误解了你的问题。

答案 1 :(得分:0)

如果程序输出在一行中,您可以使用

捕获它
read -r

然后删除" ="

LINE = `echo $REPLY | sed 's#=.*##`

并将bash解释为数字变量

echo $((LINE))

答案 2 :(得分:0)

经过进一步思考后,为了进行评分,覆盖Math.Random()的实现更有意义,以便学生程序始终生成相同的值。