通过扫描仪选择对象并将其添加到 arrayList 中

Select object via scanner and add it to an arrayList

提问人:Nicolás Ortega Muñoz 提问时间:9/21/2022 更新时间:9/21/2022 访问量:100

问:

所以我想将一个已经创建的对象添加到一个列表中,从控制台中选择它(我不知道扫描仪是否工作)。

Scanner input = new Scanner(System.in);

    Car c1 = new Car("bmw", 1);
    Car c2 = new Car("mercedes", 1);
    Car c3 = new Car("susuki", 1);

    ArrayList<Car> carList = new ArrayList<>();
    carList.add(c1);
    carList.add(c2);

    //something like this
    Car carToAdd = input.nextCar();
    carList.add(carToAdd);

例如,我想将 Car c3 添加到 ArrayList。 请帮忙,谢谢D:

Java 数组列表 java.util.scanner

评论

0赞 PM 77-1 9/21/2022
您希望在控制台上显示什么以及您的用户应该输入什么?
0赞 MC Emperor 9/21/2022
顺便说一句,它是“铃木”而不是“铃木”。
0赞 Nicolás Ortega Muñoz 9/21/2022
嗯我不知道这是否有意义,但就这样了,所以 c3(suzuki) 它已经创建并且不在 arrayList 中,所以我希望控制台中出现一个“扫描仪”,我可以在其中编写对象名称,在本例中为 c3,然后将其添加到 arrayList :S

答:

0赞 Austin 9/21/2022 #1

根据您希望显示选项的方式以及希望用户输入到控制台的内容,您可能需要处理不同的方案。我能想到的最简单的方法是在一个数组中列出所有可用的汽车,然后侦听一个索引(如果你愿意,可以偏移一个)。然后使用该索引将所需的汽车从 cars 数组中拉出,并将其放入结果数组中。

下面是一个示例。为了简单起见,我没有创建汽车类,而是使用了字符串。

import java.util.Scanner; 
import java.util.ArrayList;
class Main {
    public static void main(String[] args) {
       Scanner scanner = new Scanner(System.in);
       ArrayList<String> cars = new ArrayList<String>();
       cars.add("chevy");
       cars.add("ford");
       cars.add("weiner-mobile");
       System.out.println("Please select a car");
       for(int i = 0; i<cars.size(); i++){
           System.out.println(String.valueOf(i+1)+" ) " + cars.get(i));
       }
       int reply = scanner.nextInt();
       System.out.println("you chose: " + cars.get(reply-1));
       ArrayList<String> chosenCar = new ArrayList<String>();
       chosenCar.add(cars.get(reply-1));

    }
}

输出:

Please select a car
1 ) chevy
2 ) ford
3 ) weiner-mobile
> 2
you chose: ford

注意:您可能希望确保输入是范围内的索引,方法是将其括在 try/catch 中并处理 indexOutOfRange 异常,或者在调用 get(i) 之前根据 Array 的长度检查索引以确保它在范围内。如果输入不可转换为 int,则调用将引发异常nextInt()