Как мне манипулировать ArrayList в моей программе, чтобы каждый элемент можно было использовать отдельно? - PullRequest
0 голосов
/ 05 мая 2020

ArrayList был создан из файла, и с этим нет никаких проблем. Это часть моего кода из моего класса Helper при создании метода для отображения результатов. Я знаю, что не могу использовать .toString () для списка массивов, но я не знаю, как его использовать.

Исходный код:

public static void display(ArrayList<String> shapes) throws FileNotFoundException{
     ArrayList<String> list = new ArrayList<String>();
    Scanner input = new Scanner(ArrayList.toString(list)); //This is the problem line.

    while(input.hasNext()){
        String chosenShape = input.nextLine();

        switch (chosenShape.toLowerCase())
        {
        case "rectangle":
            Rectangle rectangle = new Rectangle();
            rectangle.name = input.nextLine();
            rectangle.setWidth(input.nextDouble());
            rectangle.setLength(input.nextDouble());
            System.out.print(rectangle);
            break;

Обновленный код:

public static void display(ArrayList<String> shapes) throws IOException, FileNotFoundException{

    java.util.List<String> list = Arrays.asList("rectangle", "circle","triangle");


    for(int i = 0; i<list.size(); i++)
        switch (list.get(i).toLowerCase())
        {
        case "rectangle":
            Rectangle rectangle = new Rectangle();
            rectangle.name = list.get(i+1);
            rectangle.setWidth(Double.valueOf(list.get(i+2)));
            rectangle.setLength(Double.valueOf(list.get(i+3)));
            System.out.print(rectangle);
            i = (i+3);
            break;

Выданные ошибки: Исключение в потоке «main» java .lang.NumberFormatException: Для входной строки: «треугольник». И когда я вынимаю «треугольник» ... Исключение в потоке «main» java .lang.ArrayIndexOutOfBoundsException: 2

1 Ответ

2 голосов
/ 05 мая 2020

Попробуйте:

public static void main(String[] args) {

        List<String> list = Arrays.asList("circle", "rectangle");

        for(int i=0; i<list.size(); i++ ) {
            switch(list.get(i).toLowerCase())
            {
            case "rectangle":
                // Your rectangle code
                break;
            case "circle":
                // Your circle code
                break;
            default: System.out.println("Default");
            }
        }
    }

Или вы можете использовать Java 8 ArrayList foreach():

list.forEach(s -> {
            switch(s.toLowerCase())
            {
            case "rectangle":
                // Your rectangle code
                break;
            case "circle":
                // Your circle code
                break;
            default: System.out.println("Default");
            }
        });

Или вы также можете использовать расширенный для l oop:

for(String s: list) {
            switch(s.toLowerCase())
            {
            case "rectangle":
                // Your rectangle code
                System.out.println("t");
                break;
            case "circle":
                // Your circle code
                break;
            default: System.out.println("Default");
            }
        }

Примечание: Вам нужно перебрать каждый элемент arraylist. Scanner используется для ввода данных пользователем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...