欺骗扫描器输入来自用户
Tricking Scanner the input comes from the user
我正在编写一个要对作业进行评分的评分程序。我的学生必须在其中一种方法中使用扫描仪。
我的评分器是一个单独的 class 调用学生的方法。当我使用扫描仪调用该方法时,它会提示我输入一些输入(这是应该的)。我希望我的评分 class 能够调用该方法并自动输入一些预定的字符串,就好像它是由用户键入的一样,而无需程序停止或暂停。
在Java有什么办法吗?
提前致谢。
或者,您可以让学生读入文件输入。您可以告诉所有学生输入文件的名称,当您 运行 学生的代码时,您的计算机上就会有输入文件。学生可以用他们自己的测试用例测试他们自己的代码,当他们提交时,他们改变他们的代码以文件输入。您仍然可以让它们输出标准输出。
您可以简单地将 System.in
替换为您自己的输入流,也许是一个包含您希望提供给学生 class.
的输入的文件
假设学生的 class 看起来像这样:
import java.util.Scanner;
public class Student {
public String prompt() {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter some input:");
return scanner.nextLine();
}
}
你可以"grade"这样:
import java.io.FileInputStream;
import java.io.IOException;
public class Grader {
public static void main(String[] args) throws IOException {
System.setIn(new FileInputStream("replies.txt"));
Student student = new Student();
String reply = student.prompt();
assert reply.equals("reply");
}
}
我正在编写一个要对作业进行评分的评分程序。我的学生必须在其中一种方法中使用扫描仪。 我的评分器是一个单独的 class 调用学生的方法。当我使用扫描仪调用该方法时,它会提示我输入一些输入(这是应该的)。我希望我的评分 class 能够调用该方法并自动输入一些预定的字符串,就好像它是由用户键入的一样,而无需程序停止或暂停。
在Java有什么办法吗?
提前致谢。
或者,您可以让学生读入文件输入。您可以告诉所有学生输入文件的名称,当您 运行 学生的代码时,您的计算机上就会有输入文件。学生可以用他们自己的测试用例测试他们自己的代码,当他们提交时,他们改变他们的代码以文件输入。您仍然可以让它们输出标准输出。
您可以简单地将 System.in
替换为您自己的输入流,也许是一个包含您希望提供给学生 class.
假设学生的 class 看起来像这样:
import java.util.Scanner;
public class Student {
public String prompt() {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter some input:");
return scanner.nextLine();
}
}
你可以"grade"这样:
import java.io.FileInputStream;
import java.io.IOException;
public class Grader {
public static void main(String[] args) throws IOException {
System.setIn(new FileInputStream("replies.txt"));
Student student = new Student();
String reply = student.prompt();
assert reply.equals("reply");
}
}