Division durch null abfangen :freak:

Status
Nicht offen für weitere Antworten.
S

Skauuwix

Gast
Also, ich hab in der schule ein projekt bei dem ich ein Taschenrechner programmieren soll! ich bin mitlerweile schon weit gekommen, aber ich schaff es einfach nicht den fehler, das man nicht durch null teilen kann, abzufangen. Also ich hoff ihr versteht was ich meine.
Jeder tipp ist hilfreich, danke im voraus.


Code:
import java.awt.*; 
import java.awt.event.*; 
public class Taschenrechner extends Frame 
implements WindowListener,ActionListener 
{ 
Label l1; 
TextField t1; 
Button b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, 
bplus, bminus, bmal, bgleich, bpunkt, bclear, bgeteilt; 
boolean Rechne=true; 
double Zahl = 0; 
String Operation=""; 

/** 
* erstellt die Oberflaeche des Taschenrechners 
**/ 
public Taschenrechner() 

{Frame window = new Frame(""); 
window.addWindowListener(this); 
window.setTitle("Roche"); 
window.setSize(165,280); 
window.setLocation(200,200); 
window.setBackground(Color.black); 
/** 
* erstellt das Anzeigefeld des Taschenrechners 
**/ 
t1= new TextField(""); 
t1.setSize(125,20); 
t1.setLocation(20,40); 
t1.setEditable(false); 
t1.setBackground(Color.white); 
window.add(t1); 
/** 
* erstellt die Buttons (0-9) des Taschenrechners 
**/ 
b7= new Button("7"); 
b7.setBackground(Color.white); 
b7.setSize(30,25); 
b7.setLocation(20,110); 
b7.addActionListener(this); 

window.add(b7); 

b8= new Button("8"); 
b8.setSize(30,25); 
b8.setLocation(50,100); 
b8.addActionListener(this); 
b8.setBackground(Color.white); 
window.add(b8 ); 

b9= new Button("9"); 
b9.setSize(30,25); 
b9.setLocation(80,110); 
b9.addActionListener(this); 
b9.setBackground(Color.white); 
window.add(b9); 

b4= new Button("4"); 
b4.setSize(30,25); 
b4.setLocation(20,140); 
b4.addActionListener(this); 
b4.setBackground(Color.white); 
window.add(b4); 

b5= new Button("5"); 
b5.setSize(30,25); 
b5.setLocation(50,130); 
b5.addActionListener(this); 
b5.setBackground(Color.white); 
window.add(b5); 

b6= new Button("6"); 
b6.setSize(30,25); 
b6.setLocation(80,140); 
b6.addActionListener(this); 
b6.setBackground(Color.white); 
window.add(b6); 

b1= new Button("1"); 
b1.setSize(30,25); 
b1.setLocation(20,170); 
b1.addActionListener(this); 
b1.setBackground(Color.white); 
window.add(b1); 

b2= new Button("2"); 
b2.setSize(30,25); 
b2.setLocation(50,160); 
b2.addActionListener(this); 
b2.setBackground(Color.white); 
window.add(b2); 

b3= new Button("3"); 
b3.setSize(30,25); 
b3.setLocation(80,170); 
b3.addActionListener(this); 
b3.setBackground(Color.white); 
window.add(b3); 

b0= new Button("0"); 
b0.setSize(30,25); 
b0.setLocation(50,190); 
b0.addActionListener(this); 
b0.setBackground(Color.white); 
window.add(b0); 

/** 
* erstellt die Operator-Buttons (C, +, -, *, /, =, .) des Taschenrechners 
**/ 
bclear= new Button("C"); 
bclear.setSize(20,15); 
bclear.setLocation(115,70); 
bclear.addActionListener(this); 
bclear.setBackground(Color.red); 
window.add(bclear); 


bplus= new Button("+"); 
bplus.setSize(30,55); 
bplus.setLocation(115,190); 
bplus.addActionListener(this); 
bplus.setBackground(Color.red); 
window.add(bplus); 



bminus= new Button("-"); 
bminus.setSize(30,25); 
bminus.setLocation(115,130); 
bminus.addActionListener(this); 
bminus.setBackground(Color.red); 
window.add(bminus); 


bpunkt= new Button("."); 
bpunkt.setSize(30,25); 
bpunkt.setLocation(20,220); 
bpunkt.addActionListener(this); 
bpunkt.setBackground(Color.red); 
window.add(bpunkt); 

bgleich= new Button("="); 
bgleich.setSize(60,25); 
bgleich.setLocation(52,220); 
bgleich.addActionListener(this); 
bgleich.setBackground(Color.red); 
window.add(bgleich); 

bmal= new Button("*"); 
bmal.setSize(30,25); 
bmal.setLocation(115,160); 
bmal.addActionListener(this); 
bmal.setBackground(Color.red); 
window.add(bmal); 

bgeteilt= new Button("/"); 
bgeteilt.setSize(30,25); 
bgeteilt.setLocation(115,100); 
bgeteilt.addActionListener(this); 
bgeteilt.setBackground(Color.red); 
window.add(bgeteilt); 
/** 
* macht die Oberfläche des Taschenrechners sichtbar 
**/ 
l1= new Label("");window.add(l1); 
window.setVisible(true); 
}//Ende Taschenrechner 


/** 
* Wird aufgerufen, wenn das Fenster geschlossen wird 
**/ 
public void windowClosing(WindowEvent e) 
{System.exit(0);} 
/** 
* Wird aufgerufen, wenn das Fenster aktiviert wird 
**/ 
public void windowActivated(WindowEvent e){} 
/** 
* Wird aufgerufen, wenn das Fenster mit dispose() geschlossen wurde 
**/ 
public void windowClosed(WindowEvent e){} 
/** 
* Wird aufgerufen, wenn das Fenster deaktiviert wird 
**/ 
public void windowDeactivated(WindowEvent e){} 
/** 
* Wird aufgerufen, wenn das Fenster wieder hochgeholt wird 
**/ 
public void windowDeiconified(WindowEvent e){} 
/** 
*Wird aufgerufen, wenn das Fenster zum Icon verkleinert wird 
**/ 
public void windowIconified(WindowEvent e){} 
/** 
*Wird aufgerufen, wenn Fenster geöffnet wurde 
**/ 
public void windowOpened(WindowEvent e){} 

  /** 
* Erkennung von Eingaben 
**/ 
public void actionPerformed(ActionEvent ea) 
{ 
  int h; 
  String inh = new String(); 
  

  String but=ea.getActionCommand(); 
  if (but=="0"){ziffer("0");} 
  else if (but=="1"){ziffer("1");} 
  else if (but=="2"){ziffer("2");} 
  else if (but=="3"){ziffer("3");} 
  else if (but=="4"){ziffer("4");} 
  else if (but=="5"){ziffer("5");} 
  else if (but=="6"){ziffer("6");} 
  else if (but=="7"){ziffer("7");} 
  else if (but=="8"){ziffer("8");} 
  else if (but=="9"){ziffer("9");} 
  else if (but=="+"){verkn("+");} 
  else if (but=="-"){verkn("-");} 
  else if (but=="*"){verkn("*");} 
  else if (but=="/"){verkn("/");} 
  else if (but==".") 
  { 
   if (Rechne) {t1.setText("0.");Rechne = false;} 
   else 
   { 
    inh = new String(t1.getText()); 
    h = inh.indexOf("."); 
    if (h < 0) {t1.setText(t1.getText() + ".");} 
   }//else 
  } 
  else if (but=="C") 
  { 
   t1.setText(""); 
   Rechne=true; 
   Zahl=0; 
   Operation=""; 
  } 
  else if (but=="="){verkn("");} 
}//Ende actionPerformed 

/** 
* schreib in Display 
**/ 
  public void ziffer(String s) 
  { 
   if (Rechne) {t1.setText(s);Rechne = false;} 
   else 
   { 
    String inh = new String(t1.getText()); 
    /**zähle die Punkte**/ 
    int h = inh.indexOf("."); 
    /**bei 6 ohne punkt oder 25 mit punkt**/ 
    if (((h<0)&&(inh.length()<6)) || ((h>0)&&(inh.length()<25))) t1.setText(t1.getText() + s); 
    else return; 
   } 
  }//Ende ziffer 
  
/** 
* durchführung der Rechnung 
**/ 
  public void verkn(String s) 
  { 
   Double wert; 
   Rechne = true; 
   try 
   { 
    if (Operation=="") 
    {    
     wert=new Double(t1.getText()); 
     Zahl= wert.doubleValue(); 
     Operation=s; 
    } 
    else 
    { 
     String wert_str = new String(t1.getText()); 
     wert=new Double(t1.getText()); 
     if (Operation=="+") 
     {Zahl=Zahl+wert.doubleValue();} 
     else if (Operation=="-") 
     {Zahl=Zahl-wert.doubleValue();} 
     else if (Operation=="*") 
     {Zahl=Zahl*wert.doubleValue();} 
          else if (Operation=="/") 
       {Zahl=Zahl/wert.doubleValue();} 
     Operation=s; 
     t1.setText(s.valueOf(Zahl)); 
     if (wert_str=="0") {t1.setText("geteilt durch 0");} 
     }   }//try 
   catch (ArithmeticException e) 
   { 
    t1.setText("Error:" + e );ziffer(""); 
       } 
   catch (Throwable e) 
   { 
    t1.setText("Fehler:" + e );ziffer(""); 
   } 
  }//Ende verkn 
/** 
* main 
**/ 
public static void main(String[]args) 
{ 
Taschenrechner meinFenster=new Taschenrechner(); 
}//End
 

Student

Top Contributor
Heiko hat gesagt.:
Teste doch einfach, ehe du teilst ob der Wert durch den geteilt werden soll 0 ist.
würd ich auch sagen. einfach eine if-abfrage zwischenschieben.

wenn der wert != 0, dann kannst du dividieren, ansonsten lässt du eine fehlermeldung aufpoppen oder so .. :idea:
 

Sky

Top Contributor
Der Fehler liegt in Zeile 292.

Ein Stringvergleich (bezogen auf den Inhalt) muss mit 'equals' durchgeführt werden:

Code:
 if (wert_str=="0")

erstetzen durch

Code:
 if (wert_str.equals( "0"))
 

Heiko

Bekanntes Mitglied
Anonymous hat gesagt.:
alter halt deine fresse du fisch :autsch:

die antwort is
Code:
if (wert_str.equals("0")) {t1.setText("geteilt durch 0");}
du Spast!

Schonmal was von Umgangsformen gehört? Als Gast sollte man sich erst recht daran halten. :noe:

Boardregeln

Im Übrigen hat Sky80 recht.
 

dotlens

Top Contributor
hui! langer text!!

du hättest einen button Array erstellen können und dann in einer for schleife die locations setzen und hinzufügen und so weiter...

zu deinem prob:
würde die eingabe in einen String speichern, dann
kannst du fragen ob ein "/" vorkommt mit:
Code:
indexOf();
wenn -1 die antwort ist kannst du weiterfahren (kein "/" vorhanden)
sonst fragst du noch ob nach dem "/" nur eine 0 steht.
das geht indem du einen subString erzeugst ab dem index, den du oben erhalten hast. dann verwandeltst du diesen in eine zahl:
Code:
int vergleich = Integer.parseInt(subString);
oder so
und vergleichst mit null:
Code:
if (vergleich == 0){abbruch;}

EDIT: hui da hab ich aber lange gebraucht!!! bin davon ausgegangen dass er ja nicht weiss wann er die null überprüfen muss, da er auch wissen muss wann er "geteilt durch" rechnet
 
S

Skauuwix

Gast
wow,
gleich so viel hilfe. danke es hat gepasst.

jetz muss ich nurnoch die if umschreiben, weil ers nämlich auch bei '-' 0 macht

:toll:
 

CelikBlek

Bekanntes Mitglied
Anonymous hat gesagt.:
alter halt deine fresse du fisch :autsch:

die antwort is
Code:
if (wert_str.equals("0")) {t1.setText("geteilt durch 0");}
du Spast!
was ist denn mit dir los? schlecht geschlafen?
 
S

Skauuwix

Gast
ja, es funktioniert jetz komplett.
danke für die hilfe.

ich bastel noch bissl dran rum, vieleicht meld ich mich nochmal :wink:
 

Heiko

Bekanntes Mitglied
Skauuwix hat gesagt.:
ja, es funktioniert jetz komplett.
danke für die hilfe.

ich bastel noch bissl dran rum, vieleicht meld ich mich nochmal :wink:

Kannst du immer machen, wenn wir helfen können tun wir das auch.

Viel Spaß noch beim programmieren.
 
S

stev.glasow

Gast
Bevor der Spinner noch kollabieren sperr ich das lieber mal.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Corben if Abfrage mit Division durch Null Java Basics - Anfänger-Themen 4
T Division durch 0 abfangen mit Schleife Java Basics - Anfänger-Themen 4
A Brauche Hilfe bei Division von Feldzahl durch Ganzzahl Java Basics - Anfänger-Themen 3
H Fehler bei integer Division Java Basics - Anfänger-Themen 28
Eninaj Division Java Basics - Anfänger-Themen 12
E Division von BigInteger soll Gelitkommazahl liefern Java Basics - Anfänger-Themen 46
Y Datentypen Double Division ungenau Java Basics - Anfänger-Themen 45
M Rationale Zahl erkennen - Kurze Frage zum Restwert nach Division Java Basics - Anfänger-Themen 3
J Division ohne Arithmetische Funktion Java Basics - Anfänger-Themen 2
M rekursive division/0 mit exception Java Basics - Anfänger-Themen 18
Arif Java Division Java Basics - Anfänger-Themen 4
C Erste Schritte Problem mit der Division von Koeffizienten... oder einfach nur irgendwlechen zahlen Java Basics - Anfänger-Themen 10
Q Operatoren inkrement der Division ? Java Basics - Anfänger-Themen 16
A Ausgabe einer Division Java Basics - Anfänger-Themen 11
S double division Java Basics - Anfänger-Themen 4
T Datentypen byte -Division..mal gehts mit cast mal ohne Java Basics - Anfänger-Themen 5
H Division Java Basics - Anfänger-Themen 4
A Problem bei der Division mit Java Java Basics - Anfänger-Themen 4
J division mit rest Java Basics - Anfänger-Themen 8
U if-Anweisung trotz Division/0 Java Basics - Anfänger-Themen 6
S Division von long! Java Basics - Anfänger-Themen 4
U Double-Variable führt Division nicht korrekt aus Java Basics - Anfänger-Themen 4
RaoulDuke Division von ints Java Basics - Anfänger-Themen 2
R mathe trainer, division und andere fragen Java Basics - Anfänger-Themen 11
B Division ergibt null Java Basics - Anfänger-Themen 7
G Modulo Division funzt nicht Java Basics - Anfänger-Themen 3
C Wie erhalte ich nur ganze Zahlen als Ergebnis einer Division Java Basics - Anfänger-Themen 4
P Division Java Basics - Anfänger-Themen 6
T Ich brauche eine Schleife die eine beliebige Zahl so lange durch 10 teilt bis zur Null Java Basics - Anfänger-Themen 5
X wie bekomme ich durch Eingabeaufforderung definierte double in einen Befehl, welcher 3 erwartete double braucht? Java Basics - Anfänger-Themen 3
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
H Counter durch gepresste Taste nur auf 1 erhöhen und nicht durchzählen lassen Java Basics - Anfänger-Themen 7
T Eingabe durch eine Zahl dividieren nachgucken? Java Basics - Anfänger-Themen 4
G Programm läuft durch, ohne Eingabe aus dem Chat abzuwarten Java Basics - Anfänger-Themen 4
S IntelliJ geht alle Klassen durch Java Basics - Anfänger-Themen 9
A 1 Leerzeichen durch zwei Leerzeichen ersetzen Java Basics - Anfänger-Themen 4
E Durch Muster in Array iterieren Java Basics - Anfänger-Themen 3
Thomas06 Wie kann man mithilfe von boolean herausfinden ob eine zahl durch 5 und 7 teilbart ist ? Java Basics - Anfänger-Themen 7
A JTextArea entfernen und durch neuen Text ersetzen Java Basics - Anfänger-Themen 8
B Den Dateipfad einer Java Datei durch Code in Selbiger finden? Java Basics - Anfänger-Themen 10
T Variable durch Action Listener ändern Java Basics - Anfänger-Themen 2
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
Agent4nobody Programmstart durch aufruf des interpreters funktioniert nicht Java Basics - Anfänger-Themen 14
obiwanke Ziffern durch ASCII Character ersetzen Java Basics - Anfänger-Themen 8
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
S Durch HashMap iterieren Java Basics - Anfänger-Themen 8
A Wenn eine Zahl durch 7 teilbar ist, soll statt der Zahl ein ‘*‘ angezeigt werden. java? Java Basics - Anfänger-Themen 47
K mit <<1 kann man mal 2 machen, mit >>2 geteilt durch zwei und was bewirkt <<<1 und >>>1? Java Basics - Anfänger-Themen 5
A Verarbeiten einer Excel Datei durch das java-Programm Java Basics - Anfänger-Themen 3
C In String, Buchstaben ersetzen durch andere Buchstaben Java Basics - Anfänger-Themen 26
F Initialisieren eines Web-Mp3 Players in Tabs durch "booleans" erst wenn Tab geöffnet wird ...? Java Basics - Anfänger-Themen 1
W Werte durch Konsole einlesen Java Basics - Anfänger-Themen 10
C if-Konstrukt durch switch-Konstrukt ersetzen Java Basics - Anfänger-Themen 14
OZAN86 For Schleife von 1-50 die Zahlen werden durch ein Komma getrennt Java Basics - Anfänger-Themen 10
Bademeister007 Operatoren Alle Zahlen einer ArrayList die durch 5 teilbar ist Java Basics - Anfänger-Themen 2
Y Wie kann ich Konsoleneingaben durch den Scanner mit JUnit 4 testen? Java Basics - Anfänger-Themen 1
yoskaem Text Color durch Klicken eines Buttons in anderer Activity ändern Java Basics - Anfänger-Themen 2
N for Schleife durch Rekursion ersetzen Java Basics - Anfänger-Themen 6
N Probleme beim printen von Arrays durch for Schleife Java Basics - Anfänger-Themen 3
L Iterieren durch eine ArrayList. Integer Array wird übergeben Java Basics - Anfänger-Themen 17
J Eine Position im String durch einen Integer - Wert teilen Java Basics - Anfänger-Themen 5
F Methoden Bitte Helft mir meinen Fehler zu finden. Möchte in diesem Bankenprogramm durch die Konsoleneingabe auswählen welches Konto reduziert und welches erhö Java Basics - Anfänger-Themen 17
E 2D Array - char durch die Matrix "wandern" lassen Java Basics - Anfänger-Themen 7
E Objekt durch Benutzer über Konsole erzeugen - Java Java Basics - Anfänger-Themen 3
F Methode für Teilbarkeit durch 5 tut was anderes.... Java Basics - Anfänger-Themen 3
H Aufruf von Methoden durch Methoden Java Basics - Anfänger-Themen 3
H Wie kann ich durch Methoden definiren? Java Basics - Anfänger-Themen 8
O Mehrfache Scanner-Eingabe durch Komma getrennt Java Basics - Anfänger-Themen 6
M String array durch Eingabe begrenzen Java Basics - Anfänger-Themen 7
J Dynamisches Array durch split()-Funktion? Java Basics - Anfänger-Themen 3
O Typparameter durch Wildcards verallgemeinern Java Basics - Anfänger-Themen 3
G Benutzereingaben durch Zeilenumbruch trennen und in Array individueller Größe speichern Java Basics - Anfänger-Themen 20
B Import Tabelle - Struktur durch User einstellbar Java Basics - Anfänger-Themen 4
K Durch eine Text eingabe etwas Ausführen Java Basics - Anfänger-Themen 5
T Konsolenscanner startet nicht durch Aufruf von Actionlistener Java Basics - Anfänger-Themen 4
A OOP Variable in anderer Klasse durch Methode aufrufen und einer anderen Variable gleichsetzen Java Basics - Anfänger-Themen 2
F Ein Datum (int) durch Methode als String formatieren Java Basics - Anfänger-Themen 2
B OOP While Schleife läuft Endlos durch externen aufruf Java Basics - Anfänger-Themen 2
D While Schleife bei Bedarf durch Eingabe stoppen Java Basics - Anfänger-Themen 15
CptK Interface Curser durch Bild ersetzen & MouseListner Java Basics - Anfänger-Themen 2
H OOP eine Zahl immer weiter durch 2 teilen Java Basics - Anfänger-Themen 15
I Null-Überprüfung durch Lambda-Expressions abkürzen Java Basics - Anfänger-Themen 8
W Teilstring durch Teilstring mittels StringBuilder ersetzen Java Basics - Anfänger-Themen 7
N Denksportaufgabe durch Algorithmus lösen Java Basics - Anfänger-Themen 2
H Array mit Zahlen die durch 3 und 5 teilbar sind erstellen Java Basics - Anfänger-Themen 13
D Interface Frame doppelt durch Aufruf der GUI Klasse Java Basics - Anfänger-Themen 1
J Die Zahl herausfinden die durch 2 - 30 Teilbar ist... Java Basics - Anfänger-Themen 17
M For-Schleife durch zwei versch. Variablen begrenzen Java Basics - Anfänger-Themen 27
W JLabel, Farbe durch Listener ändern Java Basics - Anfänger-Themen 6
T Extrahiertes Objekt durch Getter bekommen Java Basics - Anfänger-Themen 2
R Eine Schleife durch eine Methode schließen? Java Basics - Anfänger-Themen 4
N Operatoren Suchen nach einer bestimmten Eingabe (durch Scanner) Java Basics - Anfänger-Themen 7
S For-Schleife durch "ESC" verlassen? Java Basics - Anfänger-Themen 2
C char in String suchen und durch anderen String ersetzen Java Basics - Anfänger-Themen 2
T static String Variable wird nur beim ersten aufruf durch eine Funktion geändert. Java Basics - Anfänger-Themen 16
V Durch 0 teilen Java Basics - Anfänger-Themen 2
V Durch Methode Objekt löschen Java Basics - Anfänger-Themen 2
D Klasse durch eine Schleife wiederholen Java Basics - Anfänger-Themen 1
J Wie lege ich eine durch Random ausgesuchte Zahl in ein Array? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben