| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > PAMAGITE PAJALUSTA NAVICHKU |
| Автор: KrutoiNol 11.10.2009, 14:10 |
| package javaapplication2.braceChecker; public class BraceChecker { private String inputText; private String ErrorMessage1 = "sxal e pakvac"; private String ErrorMessage2= "chi sksvum pakumov"; private String ErrorMessage3 = "bacel es bayc ches pakel"; private Stack stack ; public BraceChecker(String inputStr) { this.inputText = inputStr; stack = new Stack(inputStr.length()); } public void parse(){ lab:for (int i = 0; i < inputText.length(); i++) { char ch = inputText.charAt(i); switch(ch) { case '[':stack.push('[');break; case '{':stack.push('{');break; case '(':stack.push('(');break; // TODO: push , after which break; case ']':if ((char)stack.pop()!='['){ System.out.println(ErrorMessage1); break lab; } else if (stack.pop()==0) System.out.println(ErrorMessage2); else stack.pop();break; case '}':if ((char)stack.pop()!='{'){ System.out.println(ErrorMessage1); break lab; } else if (stack.pop()==0) System.out.println(ErrorMessage2); else stack.pop();break; case ')':if ((char)stack.pop()!='('){ System.out.println(ErrorMessage1); break lab; } else if (stack.pop()==0) System.out.println(ErrorMessage2); else stack.pop();break; } } if (stack.pop()>0)System.out.println(ErrorMessage3); } } ne rabotayet |
| Автор: Данкинг 11.10.2009, 14:17 |
| |
| Автор: Samotnik 11.10.2009, 14:20 |
Это грустно или весело ? во-первых: используйте обрамление для кода во-вторых: название темы должно отображать ее суть в-третьих: вопрос конкретный в студию, что не работает ? как должно работать, где ошибки ? в-четвертых: есть центр помощи для таких просьб. |
| Автор: Данкинг 11.10.2009, 14:22 |
| В-пятых, на форуме вроде как русский язык принят. |
| Автор: revenforv 11.10.2009, 23:02 | ||
| toKrutoiNol: I think, this doesn't work because after stack.pop() an element is really thrown away of the stack. So you can't do it repeatedly to test if() {} elseif() {} else {} statement. As i've understood this util tests if "braces" are correctly coupled. With minimal changes to your code that would look like the one below. I've added stack implementation and main() method. Your "algorithm" is left as previous. Думаю это не работает, потому что после того, как вы делаете stack.pop() элемент действительно выбрасывается из стека. Поэтому нельзя применять его для проверки одного и того же элемента в конструкции if() {} else if() {} else {}. Программа, как я понял должна проверять правильность расстановки скобок в строке. С минимальными изменениями программу можно переписать так, как представлено ниже. Я добавил реализацию стека и метод main(). Ваш "алгоритм" оставил без изменений.
|
| Автор: powerOn 11.10.2009, 23:16 |
| Модератор: Сначала читаем правила форума, потом создаем темы. Правила форума: http://forum.vingrad.ru/index.php?act=boardrules |