Loading...
PlamenNeykov avatar PlamenNeykov 3 Точки

"08. Simple Text Editor" - проблем с тази задача

Здравейте,

При тази задача с примерния вход няма проблем, но в "judge" само три теста минават. Другите са "Runtime error". Не разбирам какъв е проблема. Задачата е от "Stacks and Queues - Exercises" Моля за съдействие.

Ето и моя код:

import java.util.ArrayDeque;
import java.util.Scanner;

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

        int operationNum = Integer.parseInt(scanner.nextLine());
        ArrayDeque<String> stack = new ArrayDeque<>();

        String[] task = scanner.nextLine().split("\\s+");

        for (int i = 0; i < operationNum; i++) {
            String toDo = task[0];
            if(toDo.equals("1")) {
                String toAppend = task[1];
                if (stack.size()==0) {
                    stack.push(toAppend);
                } else {
                    toAppend = stack.peek()+toAppend;
                    stack.push(toAppend);
                }
            } else if(toDo.equals("2")){
                int toDell = Integer.parseInt(task[1]);
                int toUse = stack.peek().length()-toDell;
                String newStringToPush = "";
                String lastWorkString = stack.peek();
                for (int j = 0; j < toUse; j++) {
                    newStringToPush = newStringToPush + lastWorkString.charAt(j);
                }
                stack.push(newStringToPush);


            }else if (toDo.equals("3")) {
                int charNumToPrint = Integer.parseInt(task[1])-1;
                String workWord = stack.peek();
                System.out.println(workWord.charAt(charNumToPrint));

            }else if (toDo.equals("4")) {
                stack.pop();
            }

            task = scanner.nextLine().split("\\s+");
        }
    }
}
 

 

Благодаря за съдействието.

Тагове:
0
Java Advanced
icowwww avatar icowwww 2779 Точки

Здравей,

След като тук прочетеш първата команда:

 String[] task = scanner.nextLine().split("\\s+");

След това командите, които трябва да четеш трябва да са с 1 по-малко.

Обаче ако промениш броя на командите, които трябва да прочетеш програмата ще остане да чака още един, защото четенето ти е в края на цикъла. Затова най-добре вкарай вътре в цикъла създаването на променливата task заедно с четенето от конзолата като първи ред в цикъла:

https://pastebin.com/L3vCm989

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