火车站卖票实例,四个卖票窗⼝随机卖出50张票(static成员tickers) * 不能卖出重复的票, * 不要卖出编号为负值的票, * 每个窗⼝出票后随机休眠时间范围在[100,200]ms。
时间: 2024-10-13 22:11:16 浏览: 32
这是一个模拟火车站售票的简单程序设计思路。假设我们有一个类叫做TicketOffice,它有四个静态成员变量,每个代表一个售票窗口(tickers),用于存储未售出的票。我们可以用一个集合数据结构(如ArrayList)存储票的信息,包括票的编号(正整数)。
```java
import java.util.ArrayList;
import java.util.Random;
public class TicketOffice {
private static final int MAX_TICKETS = 50;
private static ArrayList<Integer> tickets = new ArrayList<>();
private static final Random random = new Random();
// 初始化售票窗口
public static void init() {
for (int i = 1; i <= MAX_TICKETS; i++) {
tickets.add(i);
}
}
// 模拟售票过程
public static void sellFromWindow(int windowIndex) {
if (windowIndex < 0 || windowIndex >= tickers.size()) {
System.out.println("Invalid window index.");
return;
}
int ticket = tickers.get(windowIndex);
if (ticket < 0) {
System.out.println("Cannot sell negative number tickets.");
return;
}
// 随机休眠
long sleepTime = random.nextInt(201) + 100; // [100, 200] ms
try {
Thread.sleep(sleepTime);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.printf("Window %d sold ticket %d.\n", windowIndex + 1, ticket);
// 移除已卖出的票,避免重复卖出
tickers.remove(Integer.valueOf(ticket));
}
}
```
在这个例子中,`init()`函数初始化票库,然后`sellFromWindow()`方法从指定的窗口随机选择一张尚未售出的票并出售,同时随机休眠一段时间。如果窗口索引无效、票号为负,或者票已经售完,都会相应的给出错误提示。
阅读全文