Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static String[] toPolIt(String Str[], int Q)
- {
- String[] MainArray = new String[QQQ.GeneralValue];
- String[] OperationArray = new String[QQQ.ValueSign];
- Q = QQQ.GeneralValue;
- int MAPos = 0; // позиция Главного массива
- int OAPos = 0; // позиция массива операций
- int parametr = 0; // ЕСЛИ ПОЯВЛЯЕТСЯ СКОБКА
- for(int i = 0; i < QQQ.ValueSign; i++)
- {
- System.out.println(OperationArray[i]);
- }
- for(int i = 0; i < Q; i++)
- {
- // Условие для цифр.
- if (false == Str[i].equals("(") && false == Str[i].equals(")") &&
- false == Str[i].equals("+") && false == Str[i].equals("-") &&
- false == Str[i].equals("*") && false == Str[i].equals("/"))
- {
- MainArray[MAPos] = Str[i];
- MAPos++;
- System.out.println("Цифра записана = " + MainArray[MAPos-1]);
- continue;
- }
- //Условие для открывающей скобки
- if(true == Str[i].equals("(") )
- {
- parametr++; // Прибавляем параметр, так как обнаружили скобку.
- // OAPos++; // Почему плюс? Перед или после знако присваивания?
- OperationArray[OAPos] = Str[i]; // Записываем значение текущего элемента массива в свободную стороку.
- OAPos++; // Переходим к следующему, как правило пустому, элементу массива.
- continue; // Начинаем Главный цикл заново
- }
- // Условие для закрывающей скобки
- if(true == Str[i].equals(")")) // Если Правда, что Элемента Массива эквивалентен закрывающей скобке.
- {
- for(int k = 0 ; k <= QQQ.GeneralValue; k++ )
- {
- System.out.println("OAPOS в цикле = " + OAPos);
- if (true == Str[k].equals("+") && true == Str[k].equals("-") &&
- true == Str[k].equals("*") && true == Str[k].equals("/"))
- {
- MainArray[MAPos] = OperationArray[OAPos]; // текущий элемент на первой иттерации должен быть Знаком.
- MAPos ++;
- OAPos --; // Смещаем на предыдущий элемент, который может быть чем угодно.
- // Если это скобка, тогда мы должны сместить элемент до знака.
- // Если это знак, тогда нужно выйти из условия и записать элемент в главный массив
- }
- else if(OAPos == -1)
- {
- OAPos = 0;
- parametr = 0;
- continue;
- }
- else if(true == OperationArray[OAPos].equals("("))
- {
- parametr --;
- if(parametr == 0)
- continue;
- }
- }
- }
- /////////////////////////////УСЛОВИЕ ДЛЯ ЗНАКОВ. LH and LL
- if(OAPos == 0) // Если НЕТ цифры. Цифра отсеяна оператором continue в условии для цифр.
- // Скобки отсеяны выше.
- {
- //OAPos++;
- OperationArray[OAPos] = Str[i];
- OAPos++;
- }
- else if (OAPos>0)
- {
- if(true == Str[i].equals("+") || true == Str[i].equals("-") )
- {
- System.out.println(" OperationArray[OAPos] = " + OperationArray[OAPos]);
- if(OperationArray[OAPos-1].equals("*") ||
- OperationArray[OAPos-1].equals("/")) // LH
- {
- // OAPos--;
- MainArray[MAPos] = OperationArray[OAPos];
- MAPos++;
- OperationArray[OAPos] = Str[i];
- OAPos++;
- System.out.println("Записан Знак");
- //OAPos++;
- }
- else if (OperationArray[OAPos-1].equals("+") ||
- OperationArray[OAPos-1].equals("-")) // LL
- {
- //OAPos--;
- MainArray[MAPos] = OperationArray[OAPos];
- MAPos++;
- //OAPos++;
- OperationArray[OAPos] = Str[i];
- OAPos++;
- System.out.println("Записан Знак");
- //OAPos++;
- }
- else if (OperationArray[OAPos-1].equals("("))
- {
- OperationArray[OAPos] = Str[i];
- OAPos++;
- System.out.println("Записана знак после скобки");
- //OAPos++;
- }
- }
- //////////////////////////////////////////////////
- // HH and HL
- else if(true == Str[i].equals("*") || true == Str[i].equals("/"))
- {
- if(OperationArray[OAPos-1].equals("*") ||
- OperationArray[OAPos-1].equals("/")) // HH
- {
- //OAPos--;
- MainArray[MAPos] = OperationArray[OAPos];
- MAPos++;
- OperationArray[OAPos] = Str[i];
- OAPos++;
- System.out.println("Записан Знак");
- //OAPos++;
- }
- else if ( OperationArray[OAPos-1].equals("+") ||
- OperationArray[OAPos-1].equals("-")) // HL
- {
- //OAPos++;
- OperationArray[OAPos] = Str[i]; // HL. Добавление оператора в строку
- OAPos++;
- System.out.println("Записан Знак");
- // OAPos++;
- }
- else if (OperationArray[OAPos-1].equals("("))
- {
- // OAPos++;
- OperationArray[OAPos] = Str[i];
- OAPos++;
- System.out.println("Записан Знак");
- //OAPos++;
- }
- }
- }
- ////////////////////////////////////////////////
- }
- System.out.println(" OAPos на последней итерации перед выходом из функции равно = " + OAPos);
- //OAPos--;
- for(int i = OAPos; i >= 0; i--)
- {
- MainArray[MAPos] = OperationArray[i];
- MAPos++;
- }
- System.out.println(" OAPos на последней итерации перед выходом из функции равно = " + OAPos);
- for (int k = 0; k < QQQ.GeneralValue; k++) // прогоняем строку, показываем массив
- {
- System.out.println("Элемент массива MainPos " + k + " = " + MainArray[k]);
- }
- for (int k = 0; k < QQQ.ValueSign; k++) // прогоняем строку, показываем массив
- {
- System.out.println("Элемент массива OperationPos" + k + " = " + OperationArray[k]);
- }
- return MainArray;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement