Hallo Zusammen,
ich habe ein GUI-Programm, verknüpft mit einer anderen Klasse. Die Eingabe bei der grafischen Benutzeroberfläche muss immer 10 Ziffern beinhalten, weshalb ich den Datentyp long genommen habe. Die erste Ziffer muss immer 1-5, die letzte Ziffer immer 2 sein und der Rest in der Mitte spielt keine Rolle.
Es werden mir beim compilieren keine Fehler angezeigt, jedoch wenn ich nach der Zahleingabe (Bsp.: 1479238172) auf den Start Button klicke, funktioniert es nicht mehr.
Es wird folgende Fehlermeldung angezeigt: Exception in thread "AWT-EventQueue-0" java.lang.ArithmeticException: / by zero at Berechnung.Rechenweg(Berechnung.java:56)
An der 56 Zeile muss eigentlich folgendes errechnet werden - Bsp.:
pruefziffer %= modulowert (was bei der Zahleingabe folgendes wäre: 41 % 2), was irgendwie nicht funktioniert. Die Zeile befindet sich in der Sub-Klasse Berechnung - habs im Code nochmal markiert.
Hoffe, dass mir einer helfen kann und bedanke mich schonmal im voraus!
Die Codes:
GUI
Sub-Klasse Berechnung
ich habe ein GUI-Programm, verknüpft mit einer anderen Klasse. Die Eingabe bei der grafischen Benutzeroberfläche muss immer 10 Ziffern beinhalten, weshalb ich den Datentyp long genommen habe. Die erste Ziffer muss immer 1-5, die letzte Ziffer immer 2 sein und der Rest in der Mitte spielt keine Rolle.
Es werden mir beim compilieren keine Fehler angezeigt, jedoch wenn ich nach der Zahleingabe (Bsp.: 1479238172) auf den Start Button klicke, funktioniert es nicht mehr.
Es wird folgende Fehlermeldung angezeigt: Exception in thread "AWT-EventQueue-0" java.lang.ArithmeticException: / by zero at Berechnung.Rechenweg(Berechnung.java:56)
An der 56 Zeile muss eigentlich folgendes errechnet werden - Bsp.:
pruefziffer %= modulowert (was bei der Zahleingabe folgendes wäre: 41 % 2), was irgendwie nicht funktioniert. Die Zeile befindet sich in der Sub-Klasse Berechnung - habs im Code nochmal markiert.
Hoffe, dass mir einer helfen kann und bedanke mich schonmal im voraus!
Die Codes:
GUI
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class CodeGUI extends JFrame {
// Anfang Attribute
private Label lbl_Ueberschrift = new Label();
private Label lbl_Code = new Label();
private Label lbl_Ergebnis = new Label();
private NumberField nf_Code = new NumberField();
private TextArea txt_Ergebnis = new TextArea("", 1, 1, TextArea.SCROLLBARS_BOTH);
private Button but_Start = new Button();
private Button but_Loeschen = new Button();
private Button but_Beenden = new Button();
long eingabe = 0;
String ergebnis = "";
Berechnung meineKlasse = new Berechnung(eingabe, ergebnis);
// Ende Attribute
public CodeGUI(String title) {
// Frame-Initialisierung
super(title);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
int frameWidth = 327;
int frameHeight = 374;
setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (d.width - getSize().width) / 2;
int y = (d.height - getSize().height) / 2;
setLocation(x, y);
setResizable(false);
Container cp = getContentPane();
cp.setLayout(null);
// Anfang Komponenten
lbl_Ueberschrift.setBounds(72, 24, 155, 25);
lbl_Ueberschrift.setText("ID_Check");
lbl_Ueberschrift.setAlignment(Label.CENTER);
lbl_Ueberschrift.setEnabled(true);
lbl_Ueberschrift.setFont(new Font("Dialog", Font.BOLD, 12));
cp.add(lbl_Ueberschrift);
lbl_Code.setBounds(8, 72, 43, 25);
lbl_Code.setText("Code:");
lbl_Code.setAlignment(Label.LEFT);
lbl_Code.setEnabled(true);
cp.add(lbl_Code);
lbl_Ergebnis.setBounds(8, 168, 57, 25);
lbl_Ergebnis.setText("Ergebnis:");
lbl_Ergebnis.setEnabled(true);
cp.add(lbl_Ergebnis);
nf_Code.setBounds(80, 72, 225, 25);
nf_Code.setText("");
cp.add(nf_Code);
txt_Ergebnis.setBounds(80, 168, 225, 105);
txt_Ergebnis.setEditable(false);
cp.add(txt_Ergebnis);
but_Start.setBounds(240, 112, 65, 25);
but_Start.setLabel("Start");
but_Start.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
but_Start_ActionPerformed(evt);
}
});
but_Start.setFont(new Font("Dialog", Font.BOLD, 12));
cp.add(but_Start);
but_Loeschen.setBounds(80, 304, 97, 25);
but_Loeschen.setLabel("Löschen");
but_Loeschen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
but_Loeschen_ActionPerformed(evt);
}
});
but_Loeschen.setFont(new Font("Dialog", Font.BOLD, 12));
cp.add(but_Loeschen);
but_Beenden.setBounds(208, 304, 97, 25);
but_Beenden.setLabel("Beenden");
but_Beenden.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
but_Beenden_ActionPerformed(evt);
}
});
but_Beenden.setFont(new Font("Dialog", Font.BOLD, 12));
cp.add(but_Beenden);
// Ende Komponenten
setVisible(true);
} // end of public CodeGUI
// Anfang Methoden
public static void main(String[] args) {
new CodeGUI("CodeGUI");
} // end of main
public void but_Start_ActionPerformed(ActionEvent evt) {
eingabe = nf_Code.getLong();
txt_Ergebnis.setText(ergebnis = meineKlasse.Rechenweg(eingabe, ergebnis));
}
public void but_Loeschen_ActionPerformed(ActionEvent evt) {
nf_Code.clear();
eingabe = 0;
txt_Ergebnis.setText("");
ergebnis = "";
}
public void but_Beenden_ActionPerformed(ActionEvent evt) {
System.exit(0);
} // end of but_Beenden_ActionPerformed
// Ende Methoden
} // end of class CodeGUI
Sub-Klasse Berechnung
Java:
public class Berechnung{
public long eingabe = 0;
public String ergebnis = "";
public int [] ziffern = new int[8];
public int modulowert = 0;
public int pruefziffer = 0;
public int abteilungsNr;
public String abteilungsName;
public Berechnung(long peingabe, String pergebnis){
eingabe = peingabe;
ergebnis = pergebnis;
}
public String Rechenweg(long peingabe, String pergebnis){
for (int i = 0;i <= ziffern.length+1 ;i++ ) {
if (i == 0) {
modulowert = (int)eingabe % 10;
eingabe /= 10;
}
else if (i > 0 && i < 9) {
ziffern[i-1] = (int)eingabe % 10;
eingabe /= 10;
}
else if (i == 9) {
abteilungsNr = (int)eingabe % 10;
}
}
switch (abteilungsNr) {
case 1:
abteilungsName = "Leuchtenabteilung";
break;
case 2:
abteilungsName = "Maschinenabteilung";
break;
case 3:
abteilungsName = "Baustoffeabteilung";
break;
case 4:
abteilungsName = "Fliesenabteilung";
break;
case 5:
abteilungsName = "Wassertechnikabteilung";
break;
default:
abteilungsName = "nicht vorhanden!";
}
for (int j = 0;j < ziffern.length ;j++ ) {
pruefziffer += ziffern[j];
if (j == 7) {
[U][I][B][SIZE=5]pruefziffer %= modulowert;[/SIZE][/B][/I][/U]
if (pruefziffer == 0) {
ergebnis = "Der eingegebene Code ist gültig und registriert. Das Produkt ist der "+abteilungsName+" zugeordnet.";
}
else if (pruefziffer == 1) {
ergebnis = "Code ungültig! Es existiert kein Produkt mit diesem Code in der "+abteilungsName+". Bitte überprüfen Sie Ihre Eingabe!";
}
}
}
return ergebnis;
}
}