java - 如何测试交互式java代码的速度?
问题描述
我的问题中的重要词是交互式的:对于编程竞赛(UVa 在线评委),我正在编写交互式 Java 代码:它在 System.out 上输出并等待 System.in 上的响应。
我想测试这段代码的速度,但如果我手动进行交互,我的人工打字技能会减慢执行速度,并且测量会有偏差。
因此,我想要一个线程/应用程序/脚本/任何东西,当我的应用程序在 System.out 上写入时看到,(这个线程/应用程序/脚本/任何东西)然后写入我的应用程序使用它的 System.in 读取的东西。
我的应用程序应该使用 System.in 和 System.out 进行通信,因为一旦我将它提交给在线评委,这就是它的评判方式。
我认为多线程不会完成这项工作,因为 System.in 总是从键盘读取,而不是从另一个线程读取。
import java.util.Scanner;
public class Main {
public static void main(final String[] args) {
System.out.println("What now?");
final Scanner scanner = new Scanner(System.in);
final String response = scanner.nextLine();
scanner.close();
System.out.println("Finished: " + response);
}
}
我怎样才能让这段代码在没有人在键盘上打字的情况下运行?
解决方案
使用 Main 类作为引导方法,并在对InputStream
(输入)和PrintStream
(输出)进行操作的单独类中实现正在测试的代码。
import java.util.Scanner;
public class Main {
public static void main(final String[] args) {
MyCode code = new MyCode(System.in, System.out);
code.run();
}
}
System.in
现在,您不再局限于System.out
为MyCode
. 从测试中引导代码时,只需将 System.in 和 out 替换为测试代码写入和读取的普通流即可。
推荐阅读
- java - 将两个用户输入输入到两个数组
- python - 如何通过保留行值来找到数据框的 cumprod?
- python - 在破折号下拉列表中选择一个值后,在屏幕上显示“正在加载...”或“正在获取..”一段时间
- python - OOP 代码的逻辑与程序的逻辑之间的未知差异
- editor - 如何创建通过上传和返回到 editor.js 使用图像工具检索图像的服务器
- javascript - 我的 React Index.css 没有改变任何组件样式
- c - 打印从 3 到 100 的数组中的素数
- java - 使用 Java Recursive 显示基于级别的 MongoDB 文档列表
- javascript - auth.getAccessToken() 不是函数 - Azure AD PowerBI + NodeJS 集成
- javascript - React Props 正在创建一个空的 div