2016-10-19 1 views
-1

Так что я действительно не знал, как это сказать в названии. Я работаю над программой, которая читает код, а затем возвращает, сбалансированы ли все символы скобок, помещая их в связанный список. если он не сбалансирован, он вернет, что произошло несоответствие, ожидаемый символ и символ.Как использовать перечисления, чтобы определить, равны ли тогда две вещи, и вернуть соответствующее значение

Это мой код для перечисления:

public enum bracketsEnum { 
    parenthesis('(',')'), 
    square('[',']'), 
    curly('{','}'); 

private final char open,close; 

bracketsEnum(char _open, char _close){ 
    open=_open; 
    close=_close; 
} 
public char getOpen(){ 
    return open; 
} 
public char getClose(){ 
     return close; 
} 
} 

Я думал, чтобы позволить проверку программы, если текущий символом является частью перечисления, и если он совпадает с другим набором символов двигаться дальше, если не , он возвращает ожидаемый символ.

Я уже понял часть списка и как сортировать и проверять символы. Тем не менее, я просыпаюсь на переписках, и я не уверен, куда идти отсюда. Все обучающие материалы enum, которые я нашел, были довольно расплывчатыми, и я начинаю сомневаться в том, что использование перечислений на самом деле является хорошей идеей.

Кроме того, использует перечисления в этой ситуации - хорошая идея?

Спасибо!

+0

Попробуйте реализовать решение без Enum. Тогда посмотрите, даст ли он что-нибудь, если использовать Enum (очень мало, если есть). – Slava

+0

@Slava Я могу понять, почему в его нынешнем имплантате это не дает ему многого, но IMO с использованием перечисления может позволить вам иметь «MetaData» по определенному значению через члены («isEndMark», «isValidInsideOfMethod» и т. Д.) , сильный атрибут, когда этот код получает больше функций в нем ... – MordechayS

ответ

0

Enum поставляется с методом public final int compareTo (E o), где вы можете сравнить с перечислениями.

Если вы не хотите сравнивать перечисления, вы можете написать свой собственный мантод для перечисления и вызывать этот метод.

Перечисления также имеют все свойства объекта.

public enum bracketsEnum { 
parenthesis('(',')'), 
square('[',']'), 
curly('{','}'); 

private final char open,close; 

bracketsEnum(char _open, char _close){ 
open=_open; 
close=_close; 
} 
public char getOpen(){ 
    return open; 
} 
public char getClose(){ 
    return close; 
} 
//Write your own comparision logic method here 

} 
+0

Так вы предложите использовать перечисления в этой ситуации, или это будет менее эффективно? – Aziz

+0

Я бы предложил использовать стек для этого. Как только вы получите открытую скобку, подтолкните ее к стеку, и как только вы получите закрывающий кронштейн, поместите элемент из стека. Если правильная открытая скобка не выскользнула, значит, вы ошибаетесь. В конце, если никакие элементы, присутствующие в коде стека, не имеют правильной открытой и закрывающей скобки. – user3540481

Смежные вопросы