【发布时间】:2017-09-17 14:17:14
【问题描述】:
import java.util.*;
public class elevator_EXPERIMENT {
public static void main(String[] args) {
ArrayList<Integer> UpArrayList = new ArrayList<Integer>();
ArrayList<Integer> DownArrayList = new ArrayList<Integer>();
int[] Floor = new int[12];
for (int i = 0; i < Floor.length; i++) {
Floor[i] = i + 1;
}
while (UpArrayList.size() != 8) {
if (Math.random() > 0.5) {
Random x = new Random();
int UpRandom = (x.nextInt(11 - 1) + 1) + 1;
Random x1 = new Random();
int UpRandom1 = (x1.nextInt(11 - 1) + 1) + 1;
if (UpRandom != UpRandom1 && !UpArrayList.contains(Floor[UpRandom])) {
UpArrayList.add(UpRandom1);
}
}
}
while (UpArrayList.size() != 8) {
Random x = new Random();
int UpRandom = (x.nextInt(11 - 1) + 1) + 1;
while (UpArrayList.contains(Floor[UpRandom])) {
}
}
System.out.print("Unsorted floors going up ");
for (int i = 0; i < UpArrayList.size(); i++) {
System.out.print(UpArrayList.get(i) + " ");
}
System.out.println();
while (DownArrayList.size() != 5) {
if (Math.random() > 0.5) {
Random y = new Random();
int DownRandom = (y.nextInt(11 - 1) + 1) + 1;
if (DownArrayList.contains(Floor[DownRandom])) {
Random y1 = new Random();
int DownRandom1 = (y1.nextInt(11 - 1) + 1) + 1;
if (DownRandom != DownRandom1 && !DownArrayList.contains(Floor[DownRandom1])) {
DownArrayList.add(DownRandom1);
}
} else {
DownArrayList.add(Floor[DownRandom]);
}
}
}
System.out.print("\nUnsorted floors going down ");
for (int i = 0; i < DownArrayList.size(); i++) {
System.out.print(DownArrayList.get(i) + " ");
}
Collections.sort(UpArrayList);
System.out.print("\n\n" + "Sorted floors going up ");
for (int i = 0; i < UpArrayList.size(); i++) {
System.out.print(UpArrayList.get(i) + " ");
}
Collections.sort(DownArrayList, Collections.reverseOrder());
System.out.print("\n\n" + "Sorted floors going down ");
for (int i = 0; i < DownArrayList.size(); i++) {
System.out.print(DownArrayList.get(i) + " ");
}
System.out.println();
for (int i = 0; i < 8; i++) {
int floornumber = 1;
System.out.println("\nStarting at floor " + floornumber);
floornumber++;
System.out.println("Going up: now at floor " + UpArrayList.get(floornumber));
System.out.println("Stopping at floor " + UpArrayList.get(floornumber) + " for 3 seconds -> 1,2,3");
SleepTimer(3000);
}
}
public static void SleepTimer(int time) {
try {
Thread.sleep(time);
} catch (Exception e) {
System.out.println("Something went wrong");
}
}
}
您好,请看一下 SleepTimer 方法上面的 for 循环。我有两个问题。我的目标是创建一个电梯 txt 模拟器,电梯有 12 层。我创建了两个 Arraylist:一个包含 8 个随机唯一楼层,另一个包含 5 个随机唯一楼层,分别标记为 UpArrayList 和 DownArrayList。然后我对它们进行排序。然后我应该创建一个类似于这样的 txt 提示:
2 3 4 6 7 8 10 11 Sorted ArrayList
Starting at floor 1
Going up: now at floor 2
Stopping at floor 2 for 3 seconds 1, 2, 3
Starting at floor 2
Going up: now at floor 3
Stopping at floor 3 for 3 seconds 1, 2, 3
Starting at floor 3
Going up: now at floor 4
Stopping at floor 4 for 3 seconds 1, 2, 3
Starting at floor 4
Going up: now at floor 5
Going up: now at floor 6
Stopping at floor 6 for 3 seconds 1, 2, 3
Starting at floor 6
Going up: now at floor 7
Stopping at floor 7 for 3 seconds 1, 2, 3
Starting at floor 7
Going up: now at floor 8
Stopping at floor 8 for 3 seconds 1, 2, 3
基本上我希望for循环(在程序末尾)的提示格式说
Starting at Floor1
Going up: now at floor[FirstElementofUpArrayList]
Stopping at floor[FirstElementofUpArrayList" for 3 seconds -> 1,2,3
Starting at floor[SecondElementofUpArrayList]
Going up: now at floor[SecondElementofUpArrayList] for 3 seconds -> 1,2,3
直到我到达 UpArrayList 的最后一个元素。
【问题讨论】:
-
"查看 SleepTimer 方法上方的 for 循环" - 如果您只对那部分代码有问题,为什么还要包括所有其余部分?跨度>
-
因为我相信 UpArrayList 的元素以及我如何组织 Arraylist 可能与为人们提供上下文以及我需要 forloop 如何发挥作用有关。如果我没有适当地浓缩问题,我很抱歉。
-
所以您编写了一个示例输出并希望我们提供生成它的代码?这不是这里的工作方式
-
再次抱歉,我没有做到应有的具体细节。我不想要样本输出,样本输出作为可能的相同输出存在。我想要的是“基本上我想要提示的格式……说”和以下 5 行之后的内容。我想把这 5 行英文转换成我可以用 Java 处理的东西。
标签: java eclipse for-loop arraylist