Skip to content
This repository was archived by the owner on Dec 6, 2022. It is now read-only.

Commit c6a0aad

Browse files
committed
add readme
1 parent 505022c commit c6a0aad

1 file changed

Lines changed: 79 additions & 0 deletions

File tree

README.md

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
# 定时输入投放工具
2+
3+
面向对象课程电梯作业的辅助工具,根据静态的含有时间信息的输入文件,向**实时交互程序**的标准输入中**定时投放**输入内容,免去手动向控制台输入的麻烦。
4+
5+
本工具也可用于测试其他控制台实时交互的程序。
6+
7+
## 输入格式
8+
9+
以行为单位,每行的格式为 `[<time>]<text>` ,表示在运行开始后的 `<time>` 时间(单位为秒)向被测试程序输入一行 `<text>`
10+
11+
例:被测程序需要在运行开始后第 `1.0` 秒输入一行 `1-FROM-1-TO-2`,第 `2.0` 秒输入一行 `2-FROM-1-TO-3`,则本工具所需的输入内容应为(以下内容推荐存储在文件中):
12+
13+
[1.0]1-FROM-1-TO-2
14+
[2.0]2-FROM-1-TO-3
15+
16+
在运行开始第 `2.0` 秒后,即被测程序读出一行 `2-FROM-1-TO-3` 后将立即读到 `EOF`,从而不再继续等待输入。
17+
18+
## 使用方法
19+
20+
本工具既可导入到自己的工程中作为工具类使用,也可作为一个完整可执行的程序借助管道使用。
21+
22+
对于个人作业而言,可将该工具的 Jar 包导入到 IDEA 工程中:
23+
24+
- 在 IDEA 主界面上方菜单栏点击 `File` \-\> `Project Structure`
25+
- 在弹出的窗口左侧选择 `Libraries`
26+
- 点击上方 `+` 号,选择本工具的 Jar 包,将其添加入工程中。
27+
28+
本工具只含有一个 `TimeInput` 类,该类的部分源码:
29+
30+
```java
31+
public class TimeInput {
32+
33+
// 构造方法, 传入一个 InputStream 对象, 为静态的含有时间戳的输入, 格式见本文上一节
34+
public TimeInput(InputStream inputStream) { /* ... */ }
35+
36+
// 返回一个 InputStream 对象,将上述静态的输入转化为实时的输入
37+
public InputStream getTimedInputStream() { /* ... */ }
38+
}
39+
```
40+
41+
使用示例 (以 `new TimeInput(System.in).getTimedInputStream()` 替换 `System.in`):
42+
43+
```java
44+
import oo.util.TimeInput;
45+
46+
import java.util.Scanner;
47+
48+
public class Main {
49+
// Solution of A + B problem with multiple inputs.
50+
public static void main(String[] args) {
51+
// Scanner cin = new Scanner(System.in);
52+
Scanner cin = new Scanner(new TimeInput(System.in).getTimedInputStream());
53+
while (cin.hasNext()) {
54+
int a = cin.nextInt();
55+
int b = cin.nextInt();
56+
System.out.println(a + b);
57+
}
58+
}
59+
}
60+
/*
61+
Sample content of `input.txt`:
62+
[1.0]1 2
63+
[2.0]2 3
64+
*/
65+
```
66+
67+
本工具也可直接执行,用来在互测中测试他人的程序。
68+
69+
示例命令 (从 `input.txt` 中读取静态的输入内容, 并通过管道发射给 `Elevator.jar`):
70+
71+
```shell
72+
java -jar TimeInput.jar < input.txt | java -jar Elevator.jar
73+
```
74+
75+
## 注意事项
76+
77+
- 该工具仅限本地调试使用。提交的作业**不应依赖**本工具。
78+
- 推荐采用**导入 Jar 包**方式使用该工具,不建议直接将本工具源代码添加到个人作业中。
79+
- <font color="red">**严禁**</font>将本工具(包括 Jar 包以及源代码)提交到作业仓库中,如因此导致被查重系统判定为抄袭,后果自负。

0 commit comments

Comments
 (0)