Sdilejkod.cz
Přehledná cesta jak sdílet zdrojový kód

Jméno: Heslo: | Registrace

Zobrazit zdrojovy kód #3106

Informace:

Zdrojový kód uložil: Sam - 19.12.2011 v 20:00
Jazyk: Java
Popis: Kalkulačka vstup z jednoho řádku

Odkazy:

Na kód:
Plain text:
Obrázek:
K dispozici jsou různé barevné varianty, čtěte informace
Kód pro fórum:

Uložený zdrojový kód:

Pokud chcete text zkopírovat, použijte textový soubor, viz. výše.

  1. package kalkulacka;
  2.  
  3. import java.util.Scanner;
  4.  
  5. public class kalkulacka {
  6.  
  7.     public static void main(String[] args) {
  8.  
  9.         Scanner sc = new Scanner (System.in);
  10.  
  11.         int pocet = 0;
  12.         String vyraz;
  13.  
  14.         System.out.println("Zadejte priklad:");
  15.             vyraz = sc.nextLine();
  16.  
  17.         vyraz = vyraz.replaceAll("\\s+","");  //odstraneni mezer
  18.         pocet = vyraz.length ();   //pocet znaku v radku
  19.  
  20.         String[] poleOperatoru = new String[pocet];
  21.         String[] poleCisel = new String[pocet];
  22.  
  23.         poleCisel = vyraz.split("[\\*/\\-\\+]");  // rodeleni podle operatoru na cisla
  24.         poleOperatoru = vyraz.split("[0-9]");
  25.  
  26.         /*
  27.         for (int i = 0; i < poleCisel.length; i++) {
  28.              System.out.println(i + " > " + poleCisel[i]);
  29.         }
  30.         for (int i = 0; i < poleOperatoru.length; i++) {
  31.              System.out.println(i + " > " + poleOperatoru[i]);
  32.         }
  33.         */
  34.        
  35.        
  36.         float vysledek = Float.parseFloat(poleCisel[0]);
  37.  
  38.         if(poleOperatoru[0].equals("-")){ //
  39.             vysledek = vysledek * (-1);
  40.         }
  41.            
  42.         for (int cislo = 1, operator = 1; cislo < poleCisel.length; cislo++, operator++) {
  43.             if(poleOperatoru[operator].equals("")){ //vynechani prazdnych operatoru
  44.                 operator++;
  45.             }
  46.             if(poleCisel[cislo].equals("")){ //vynechani prazdnych cisel
  47.                 cislo++;
  48.             }
  49.  
  50.             float prvniCislo = Float.parseFloat(poleCisel[cislo]);
  51.            
  52.             if(poleOperatoru[operator].equals("+")){
  53.                 if(poleOperatoru.length-1 > operator){
  54.                     if(poleOperatoru[operator+1].equals("*")){
  55.                         float druhyCislo = Float.parseFloat(poleCisel[cislo+1]);
  56.                         float nasobek = prvniCislo * druhyCislo;
  57.                         vysledek = vysledek + nasobek;
  58.                         cislo++;
  59.                         operator++;
  60.                     }else if(poleOperatoru[operator+1].equals("/")){
  61.                         float druhyCislo = Float.parseFloat(poleCisel[cislo+1]);
  62.                         float delenec = prvniCislo / druhyCislo;
  63.                         vysledek = vysledek + delenec;
  64.                         cislo++;
  65.                         operator++;
  66.                     }else{
  67.                         vysledek = vysledek + prvniCislo;
  68.                 }
  69.                 }
  70.                 else{
  71.                     vysledek = vysledek + prvniCislo;
  72.                 }
  73.             }else if(poleOperatoru[operator].equals("-")){
  74.                 if(poleOperatoru.length-1 > operator){
  75.                     if(poleOperatoru[operator+1].equals("*")){
  76.                         float druhyCislo = Float.parseFloat(poleCisel[cislo+1]);
  77.                         float nasobek = prvniCislo * druhyCislo;
  78.                         vysledek = vysledek - nasobek;
  79.                         cislo++;
  80.                         operator++;
  81.                     }else if(poleOperatoru[operator+1].equals("/")){
  82.                         float druhyCislo = Float.parseFloat(poleCisel[cislo+1]);
  83.                         float delenec = prvniCislo / druhyCislo;
  84.                         vysledek = vysledek - delenec;
  85.                         cislo++;
  86.                         operator++;
  87.                     }else if(poleOperatoru[operator+1].equals("/-")){
  88.                         float druhyCislo = Float.parseFloat(poleCisel[cislo+1]);
  89.                         float delenec = prvniCislo / (-1) / druhyCislo;
  90.                         vysledek = vysledek - delenec;
  91.                         cislo++;
  92.                         operator++;
  93.                     }else if(poleOperatoru[operator+1].equals("*-")){
  94.                         float druhyCislo = Float.parseFloat(poleCisel[cislo+1]);
  95.                         float nasobek = prvniCislo * (-1) * druhyCislo;
  96.                         vysledek = vysledek - nasobek;
  97.                         cislo++;
  98.                         operator++;
  99.                     }else{
  100.                         vysledek = vysledek - prvniCislo;
  101.                 }
  102.                 }
  103.                 else{
  104.                     vysledek = vysledek - prvniCislo;
  105.                 }
  106.             }else if(poleOperatoru[operator].equals("*")){
  107.                 if(operator == 1){
  108.                     prvniCislo = vysledek;
  109.                     float druhyCislo = Float.parseFloat(poleCisel[cislo]);
  110.                     float nasobek = prvniCislo * druhyCislo;
  111.                     vysledek =  nasobek;
  112.                 }else{
  113.                     prvniCislo = vysledek;
  114.                     float druhyCislo = Float.parseFloat(poleCisel[cislo+1]);
  115.                     float nasobek = prvniCislo * druhyCislo;
  116.                     vysledek = vysledek + nasobek;
  117.                     cislo++;
  118.                 }
  119.             }else if(poleOperatoru[operator].equals("/")){
  120.                 if(operator == 1){
  121.                     prvniCislo = vysledek;
  122.                     float druhyCislo = Float.parseFloat(poleCisel[cislo]);
  123.                     float delenec = prvniCislo / druhyCislo;
  124.                     vysledek =  delenec;
  125.                 }else{
  126.                     prvniCislo = vysledek;
  127.                     float druhyCislo = Float.parseFloat(poleCisel[cislo+1]);
  128.                     float delenec = prvniCislo * druhyCislo;
  129.                     vysledek = vysledek + delenec;
  130.                     cislo++;
  131.                 }
  132.             }else{
  133.                 System.out.println("vyraz nelze resit");
  134.                 break;
  135.             }
  136.              
  137.         }
  138.            
  139.        System.out.println(vysledek);
  140.  
  141.     }
  142.  
  143. }

Komentáře:

Pokud chcete, můžete ke kódu zanechat komentář.
Prosím vyplňte všechny políčka označená pomocí *, ta jsou povinná. HTML není povoleno.

Ke kódu zatím nejsou žádné komentáře.

Vytvořil Jaa(c) s pomocí GeSHi, 2009 - 2012. Grafiku navrhl lefiath. Hosting zajišťuje OneBit.cz.