Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.studia;
- import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
- public class Main {
- public static String wyr = "5*(3-2)^2/3=";
- public String wyr2 = "22.5+4-8=";
- public String wyr3 = "12*3^2=";
- public String wyr4 = "(2*(3-8))+4=";
- public static void main(String[] args)
- {
- String[] onp = new String[5];
- String onp1 = ONP(wyr);
- }
- public static boolean isGoodString(String str)
- {
- if(str.endsWith("="))
- return true;
- else
- return false;
- }
- public static String ONP(String str)
- {
- String ONP = "";
- String[] stack = new String[15];
- int top = -1;
- for(int i = 0; i<str.length();i++)
- {
- if((str.charAt(i) >= '0' && str.charAt(i)<='9')||str.charAt(i) == '.')
- {
- ONP += str.charAt(i);
- if(!(str.charAt(i+1) >= '0' && str.charAt(i+1)<='9') && str.charAt(i+1) != '.')
- {
- ONP += " ";
- }
- }
- else
- {
- switch (str.charAt(i))
- {
- case '-':
- case '+':
- {`
- while(top >= 0 && !stack[top].equals("("))
- ONP += stack[top--] + " ";
- stack[++top] = str.charAt(i) + "";
- break;
- }
- case '*':
- case '/':
- {
- while(top >= 0 && !stack[top].equals("(") && (!stack[top].equals("+") || !stack[top].equals('-'))) {
- ONP += stack[top--] + " ";
- }
- top++;
- stack[top] = str.charAt(i) + "";
- break;
- }
- case 'v':
- case '^':
- {
- while(top >= 0 && !stack[top].equals("(") && (stack[top].equals("v") || stack[top].equals('^')))
- ONP += stack[top--] + " ";
- top++;
- stack[top] = str.charAt(i) + "";
- break;
- }
- case '(':
- {
- stack[++top] = str.charAt(i) + "";
- break;
- }
- case ')':
- {
- while(top >= 0 &&!stack[top].equals("("))
- {
- ONP += stack[top--] + " ";
- }
- top--;
- break;
- }
- case '=':
- {
- while(top >= 0)
- ONP += stack[top--] + " ";
- ONP += "=";
- }
- }
- }
- }
- System.out.println(ONP);
- return ONP;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement