Advertisement
Zidinjo

Taschenrecher 2.0

Nov 13th, 2014
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.43 KB | None | 0 0
  1. import java.util.Scanner;
  2. import java.text.DecimalFormat;
  3. import java.util.Locale;
  4.  
  5. public class Taschenrechner {
  6.  
  7.     public static void main(String[] args){
  8.        
  9.         DecimalFormat df = new DecimalFormat("###,###,###.###"); // Fuer die Uebersichlichkeit sont zu lange Nachkommastellen
  10.         Locale.setDefault(Locale.GERMAN); // Deutsche Tastatur anstatt . jetzt , moeglich
  11.        
  12.         String wert; char vorzeichen = 0; Boolean while_schleife = true; // String/Char/Boolean Variablen
  13.         double berechneter_wert = 0; double wert_double = 0; // Double Variablen
  14.         Scanner scanner, scanner2; // Scanner Variablen
  15.        
  16.         System.out.println("Hallo beim Taschenrechner, die Operatoren + , - , * , / sind erlaubt. Parameter e für Beendigung \n");
  17.        
  18.         while(while_schleife) // Schleifenbedinung ist true außer wenn wir ein e eingeben dann wird der Boolean auf false gesetzt
  19.         {
  20.             try
  21.             {
  22.                 eingabeHilfe();
  23.                 System.out.println("Ihr Wert ist  " + df.format(berechneter_wert)+" | e=ende c=clear |");
  24.                 scanner = new Scanner(System.in); // Konsolen eingabe
  25.                
  26.                 wert = scanner.nextLine();
  27.                 vorzeichen = wert.charAt(0); // char vorzeichen den 0ten Wert zuweisen. z.b + - * /
  28.                
  29.                 scanner2 = new Scanner(wert.substring(1)); // substring nach der Stelle 1 der rest in Typ Scanner verweisen
  30.                
  31.                 switch (vorzeichen)
  32.                 {
  33.                     case 'e': // | "" fuer String |  '' für char | int, double andere werte ist zahl nötig
  34.                         while_schleife=false; // Schleife Beendigt !
  35.                     case 'c':
  36.                         berechneter_wert = 0.0;
  37.                         break; // break sonst Fehlermeldung wegen Methode vom Scanner !
  38.                     case '+':
  39.                         wert_double = scanner2.nextDouble();
  40.                         berechneter_wert = berechneter_wert + wert_double;
  41.                         break;
  42.                     case '-':
  43.                         wert_double = scanner2.nextDouble();
  44.                         berechneter_wert = berechneter_wert - wert_double;
  45.                         break;
  46.                     case '*':
  47.                         wert_double = scanner2.nextDouble();
  48.                         berechneter_wert = berechneter_wert * wert_double;
  49.                         break;
  50.                     case '/':
  51.                         wert_double = scanner2.nextDouble();
  52.                         if(wert_double != 0) // Wenn nextDouble keine 0 vom Substring dann geht if sonst else -> Fehlermeldung
  53.                         {
  54.                             berechneter_wert = berechneter_wert / wert_double;
  55.                             break;
  56.                         }
  57.                         else
  58.                         {
  59.                             throw new DivisionByZeroException();
  60.                         }
  61.                     default: // Wenn nichts eingeben wird, dann wird eine Fehlermeldung geworfen mit Verweis auf die Klasse Invalid...
  62.                         throw new InvalidOperatorException();
  63.                 }
  64.             }
  65.             catch(DivisionByZeroException e)  // Auffangen (engl. catch) sonst Fehlermeldung nicht möglich
  66.             {
  67.                 System.out.println("Fehler --- "+ e +": Division durch 0 \n");
  68.             }
  69.             catch(InvalidOperatorException e)
  70.             {
  71.                 System.out.println("Fehler --- "+ e +": Unbekannter Operator \n"); 
  72.             }
  73.             catch(Exception e)
  74.             {
  75.                 System.out.println("Fehler --- unbekannter Fehler \n");
  76.             }
  77.         }
  78.     }  
  79.     static void eingabeHilfe()
  80.     {
  81.         System.out.println("Bitte Operationen z.B +9 eingaben oder *8 \n");
  82.     }
  83. }
  84. class DivisionByZeroException extends Exception // Klasse Division... hat die Attribute von Exception geerbt deshalb extends !
  85. {
  86.     private static final long serialVersionUID = 1L; // Unnoeetig eigentlich - Identifizierung möglich mit default gesetzt 1L
  87.     DivisionByZeroException()
  88.     {    
  89.     }
  90. }
  91.  
  92. class InvalidOperatorException extends Exception
  93. {
  94.     private static final long serialVersionUID = 1L;
  95.     InvalidOperatorException()
  96.     {
  97.     }
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement