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);
}
}