Професионална програма
Loading...
+ Нов въпрос
MartinBG avatar MartinBG 2769 Точки

Проблемът е на ред №29 - има излишна проверка дали стрингът се съдържа, при което няма да изведе никакъв резултат, ако го го няма (a трябва да върне "False"):

                case "Start":
                    String str = tokens[1];
                    if (input.contains(str)) { // Тази проверка предизвиква грешката
                        String strToCompare = input.substring(0, str.length());
                        if (strToCompare.equals(str)) {
                            System.out.println("True");
                        } else {
                            System.out.println("False");
                        }
                    }
                    break;

 

Между другото, има още една грешка в кода, която тестовете в Judge са пропуснали:

                case "Remove":
                    int startIndex = Integer.parseInt(tokens[1]);
                    int count = Integer.parseInt(tokens[2]);
                    StringBuilder result = new StringBuilder(input);
                    result.replace(startIndex, startIndex + count, "");
                    System.out.println(result);
                    break;

При "Remove" ще се изведе верен резултат, но промененият стринг не се запазва (липсва input = result.toSring();) и кодът работи коректно само ако тази команда не се ползва или е последна.

 

За "Start" може да използваш String#startsWith(String prefix):

            case "Start":
                String str = tokens[1];
                if (input.startsWith(str)) {
                    System.out.println("True");
                } else {
                    System.out.println("False");
                }
                break;

За "Remove" може да използваш StringBuilder#delete(int start, int end):

            case "Remove":
                int startIndex = Integer.parseInt(tokens[1]);
                int count = Integer.parseInt(tokens[2]);
                input = new StringBuilder(input)
                        .delete(startIndex, startIndex + count)
                        .toString();
                System.out.println(input);
                break;

 

0