package kalkulacka; import java.util.Scanner; public class kalkulacka { public static void main(String[] args) { Scanner sc = new Scanner (System.in); int pocet = 0; String vyraz; System.out.println("Zadejte priklad:"); vyraz = sc.nextLine(); vyraz = vyraz.replaceAll("\\s+",""); //odstraneni mezer pocet = vyraz.length (); //pocet znaku v radku String[] poleOperatoru = new String[pocet]; String[] poleCisel = new String[pocet]; poleCisel = vyraz.split("[\\*/\\-\\+]"); // rodeleni podle operatoru na cisla poleOperatoru = vyraz.split("[0-9]"); /* for (int i = 0; i < poleCisel.length; i++) { System.out.println(i + " > " + poleCisel[i]); } for (int i = 0; i < poleOperatoru.length; i++) { System.out.println(i + " > " + poleOperatoru[i]); } */ float vysledek = Float.parseFloat(poleCisel[0]); if(poleOperatoru[0].equals("-")){ // vysledek = vysledek * (-1); } for (int cislo = 1, operator = 1; cislo < poleCisel.length; cislo++, operator++) { if(poleOperatoru[operator].equals("")){ //vynechani prazdnych operatoru operator++; } if(poleCisel[cislo].equals("")){ //vynechani prazdnych cisel cislo++; } float prvniCislo = Float.parseFloat(poleCisel[cislo]); if(poleOperatoru[operator].equals("+")){ if(poleOperatoru.length-1 > operator){ if(poleOperatoru[operator+1].equals("*")){ float druhyCislo = Float.parseFloat(poleCisel[cislo+1]); float nasobek = prvniCislo * druhyCislo; vysledek = vysledek + nasobek; cislo++; operator++; }else if(poleOperatoru[operator+1].equals("/")){ float druhyCislo = Float.parseFloat(poleCisel[cislo+1]); float delenec = prvniCislo / druhyCislo; vysledek = vysledek + delenec; cislo++; operator++; }else{ vysledek = vysledek + prvniCislo; } } else{ vysledek = vysledek + prvniCislo; } }else if(poleOperatoru[operator].equals("-")){ if(poleOperatoru.length-1 > operator){ if(poleOperatoru[operator+1].equals("*")){ float druhyCislo = Float.parseFloat(poleCisel[cislo+1]); float nasobek = prvniCislo * druhyCislo; vysledek = vysledek - nasobek; cislo++; operator++; }else if(poleOperatoru[operator+1].equals("/")){ float druhyCislo = Float.parseFloat(poleCisel[cislo+1]); float delenec = prvniCislo / druhyCislo; vysledek = vysledek - delenec; cislo++; operator++; }else if(poleOperatoru[operator+1].equals("/-")){ float druhyCislo = Float.parseFloat(poleCisel[cislo+1]); float delenec = prvniCislo / (-1) / druhyCislo; vysledek = vysledek - delenec; cislo++; operator++; }else if(poleOperatoru[operator+1].equals("*-")){ float druhyCislo = Float.parseFloat(poleCisel[cislo+1]); float nasobek = prvniCislo * (-1) * druhyCislo; vysledek = vysledek - nasobek; cislo++; operator++; }else{ vysledek = vysledek - prvniCislo; } } else{ vysledek = vysledek - prvniCislo; } }else if(poleOperatoru[operator].equals("*")){ if(operator == 1){ prvniCislo = vysledek; float druhyCislo = Float.parseFloat(poleCisel[cislo]); float nasobek = prvniCislo * druhyCislo; vysledek = nasobek; }else{ prvniCislo = vysledek; float druhyCislo = Float.parseFloat(poleCisel[cislo+1]); float nasobek = prvniCislo * druhyCislo; vysledek = vysledek + nasobek; cislo++; } }else if(poleOperatoru[operator].equals("/")){ if(operator == 1){ prvniCislo = vysledek; float druhyCislo = Float.parseFloat(poleCisel[cislo]); float delenec = prvniCislo / druhyCislo; vysledek = delenec; }else{ prvniCislo = vysledek; float druhyCislo = Float.parseFloat(poleCisel[cislo+1]); float delenec = prvniCislo * druhyCislo; vysledek = vysledek + delenec; cislo++; } }else{ System.out.println("vyraz nelze resit"); break; } } System.out.println(vysledek); } }