2016-08-07 1 views
-4
/** Test if delimiters in the given expression are properly matched. */ 
public static boolean isMatched(String expression) { 
    final String opening = "({[";   // opening delimiters 
    final String closing = ")}]";   // respective closing delimiters 
    Stack<Character> buffer = new LinkedStack<>(); 
    for (char c:expression.toCharArray()) { 
    if (opening.indexOf(c) != -1)  // this is a left delimiter 
     buffer.push(c); 
    else if (closing.indexOf(c) != -1) { // this is a right delimiter 
    if (buffer.isEmpty())    // nothing to match with 
     return false; 
    if (closing.indexOf(c) != opening.indexOf(buffer.pop())) 
     return false;      // mismatched delimiter 
    } 
    } 
    return buffer.isEmpty();    // were all opening delimiters matched? 
} 
  1. Предположим, общий интерфейс стека, Stack<E> с невыполненных методами: push(E), pop(), isEmpty() где E представляет собой общий тип данных.
  2. И LinkedArray<E> класс, реализующий все методы Stacks<E>.
  3. 'expression' in 'isMatched()' - математическое выражение с фигурными скобками в качестве разделителей. Ex-[{(a+b)*(c+d)}]; и
  4. isMatched(String expression) - это метод проверки правильности парного сопряжения в выражении.
  5. buffer - это стек, в котором хранятся нажатые выражения (теперь массив из char).

Я могу понять код до каждого цикла. И линии после этого едят меня.Пожалуйста, объясните мне этот код Разделитель согласования с стеки

+1

Не вставлять ссылку на * изображение * кода. Вставьте код в вопрос. – Andreas

+0

Если строка 'if (opening.indexOf (c)! = -1)' ест вас, тогда, может быть, вам следует ** прочитать javadoc ** ['String.indexOf (char)'] (https: // docs.oracle.com/javase/7/docs/api/java/lang/String.html#indexOf(int)), чтобы узнать, что он делает и что означает возвращаемое значение '-1'. Я имею в виду, что код в цикле делает * обширным * использование 'indexOf()', поэтому, если вы не понимаете, что он делает, неудивительно, что вы едите. – Andreas

+0

Я использую небольшой мобильный телефон. Поэтому его трудно ввести коды со всеми этими отступами. –

ответ

0

Метод indexOf ("c") используется для возврата индекса первого вхождения c в заданную строку. Например String s = "java"; int i = s.indexOf ("a"); будет устанавливать i = 1

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

  • Нет связанных вопросов^_^