gpt4 book ai didi

java - 控制台输入到 arraylist java 中,没有重复输入

转载 作者:太空宇宙 更新时间:2023-11-04 11:59:16 26 4
gpt4 key购买 nike

任务:编写一个 Java 程序,允许该程序的用户为 field 中 8 个跑道跑道的每一个跑道分配一名运行者。

我能够让输入进程、数组列表、setter 和 getter 正常工作,但我的问题是我很难理解如何将 8 个 channel 的输入数量限制为每个运行者只能分配一个 channel 。这是我当前输入的代码:

public List<Item> createListOfCompetitors(){

List<Item> newListOfCompetitors = new ArrayList<>();

try (Scanner sc = new Scanner(System.in)) {
do {
System.out.println("Enter Competing Runner Name");
String name = sc.nextLine();

System.out.println("Assign a lane to the runner! ");
while (!sc.hasNextDouble()) {
System.out.println("Use a valid number");
sc.next();
}
double lane = sc.nextDouble();
Item item = new Item(name, lane);
newListOfCompetitors.add(item);
System.out.println("Enter Y to continue or N to quit");
sc.nextLine();
} while (sc.nextLine().equalsIgnoreCase("y"));
}
return newListOfCompetitors;
}

Dependencies in my program

最佳答案

我可能会选择使用车道 map 来表示被占用的车道。这样,您可以添加一个条件来检查从控制台输入的车道是否已被占用。

public Map<Double, Item> createListOfCompetitors() {
Map<Double, Item> lanes = new HashMap<>();

try (Scanner sc = new Scanner(System.in)) {
do {
System.out.println("Enter Competing Runner Name");
String name = sc.nextLine();

System.out.println("Assign a lane to the runner! ");
double lane;
do {
String lane = sc.nextLine();
try {
lane = Double.parseDouble(lane);
if (lanes.get(lane) == null) {
lanes.put(lane, new Item(name, lane));
break;
} else {
System.out.println("Lane number already chosen.");
}
} catch (NumberFormatException e) {
System.out.println("Please enter a valid lane number.");
}
} while (true);
} while (sc.nextLine().equalsIgnoreCase("y"));
}

return lanes;
}

关于java - 控制台输入到 arraylist java 中,没有重复输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41084359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com