Loading...
Tsveten.kavrakov avatar Tsveten.kavrakov 8 Точки

Задача 2. Change List дава Runtime error на единия от тестовете

Здравейте,

Не можах да открия къде се дъни.

Моля помогнете да намеря грешката.

Приятен ден!

Задачата е :

Write a program, which reads a list of integers from the console and receives commands, which manipulate the list. Your program may receive the following commands:

  • Delete {element} – delete all elements in the array, which are equal to the given element
  • Insert {element} {position} – insert element and the given position

You should stop the program when you receive the command "end". Print all numbers in the array separated with single whitespace.

Examples

Input

Output

1 2 3 4 5 5 5 6

Delete 5

Insert 10 1

Delete 5

end

1 10 2 3 4 6

20 12 4 319 21 31234 2 41 23 4

Insert 50 2

Insert 50 5

Delete 4

end

20 12 50 319 50 21 31234 2 41 23

 

Решението ми е:

import java.util.*;
public class Main {

    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);

        List<Integer> intList = new ArrayList<Integer>();
        int[] intArr=Arrays.stream(sc.nextLine().split(" ")).mapToInt(e->Integer.parseInt(e)).toArray();

        for (int i:intArr){
            intList.add(i);
        }

        String strInput="";
        while(!(strInput=sc.nextLine().toLowerCase()).equals("end")){
            String[] inputArr=strInput.split(" ");
            switch (inputArr[0]){
                case "insert":
                    int element=Integer.parseInt(inputArr[1]);
                    int index=Integer.parseInt(inputArr[2]);
                    if (index >= 0 && index < intList.size()){
                        intList.add(index,element);
                    }
                    break;
                case "delete":{
                    int searchVal=Integer.parseInt(inputArr[1]);
                    intList.removeAll(Collections.singleton(searchVal));
                    break;
                }
            }
        }
        for (int i=0;i<intList.size();i++){
            System.out.printf("%d ",intList.get(i));
        }
    }
}

 

Тагове:
0
Module: Java Advanced
PetarIliev1 avatar PetarIliev1 73 Точки

Грешката ти е:

String[] inputArr=strInput.split(" ");

Трябва да е :

String[] inputArr=strInput.split("\\s+");

Явно има тест от сорта на 2 3 4   5 и то опитва да парсне whitespace към инт.

(\\s+) - един space или повече.

 

0
19/06/2019 21:22:03
Tsveten.kavrakov avatar Tsveten.kavrakov 8 Точки

Благодаря, явно е време да науча regex .

Некоректно е ,че никъде в условието не беше казано,че може да има повече от един интервал във входните данни.

Успех!

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.