Hallo zusammen,
ich beschäftige mich seit ca. einer Woche mit Java und habe mir ein Programm zusammengeschustert, dass mir eine Prüfziffer berrechnen soll. Es gibt zwei Knöpfe (einer soll die Prüfziffer berrechnen und der andere beendet das Programm) und zwei Textfelder (in Textfeld tippt man eine 8-stellige Zahl und in Textfeld2 wird die 8-stellige Zahl inkl. Prüfziffer ausgegeben). Dafür habe ich mir die aktuelle XDEV-Version (4.0.1) installiert und nach einigem rumbasteln folgenden Code erstellt:
Beim compilieren wird mir erstmal keinerlei Fehlermeldung angezeigt. Der Knopf Progamm beenden sowie die Fehlermeldung wenn man eine nicht 8-stellige Zahl eintippt funktionieren ohne Probleme. Will ich die Prüfziffer berrechnen lassen erhalte ich allerdings folgende Exception(s):
Leider hat mich googeln bisher nicht weitergebracht. Habt ihr einen Rat für mich? :bahnhof:
Mit noobiegrüßen
Örnesto
ich beschäftige mich seit ca. einer Woche mit Java und habe mir ein Programm zusammengeschustert, dass mir eine Prüfziffer berrechnen soll. Es gibt zwei Knöpfe (einer soll die Prüfziffer berrechnen und der andere beendet das Programm) und zwei Textfelder (in Textfeld tippt man eine 8-stellige Zahl und in Textfeld2 wird die 8-stellige Zahl inkl. Prüfziffer ausgegeben). Dafür habe ich mir die aktuelle XDEV-Version (4.0.1) installiert und nach einigem rumbasteln folgenden Code erstellt:
Java:
package Fenster;
import xdev.lang.EventHandlerDelegate;
import xdev.ui.GBC;
import xdev.ui.XdevButton;
import xdev.ui.XdevContainer;
import xdev.ui.XdevSplitPane;
import xdev.ui.XdevTextField;
import xdev.ui.XdevWindow;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JOptionPane;
public class Wnd1
extends XdevWindow
{
@EventHandlerDelegate void button_mouseClicked(MouseEvent event)
{
String PNR;
String NR1,NR2,NR3,NR4,NR5,NR6,NR7,NR8;
Integer NR1INT,NR2INT,NR3INT,NR4INT,NR5INT,NR6INT,NR7INT,NR8INT ;
String NR2STR, NR4STR, NR6STR, NR8STR;
Integer NR2TEST1, NR2TEST2, NR4TEST1, NR4TEST2, NR6TEST1, NR6TEST2, NR8TEST1, NR8TEST2;
Integer NR1B,NR2B,NR3B,NR4B,NR5B,NR6B,NR7B,NR8B;
Integer Pruefziffer;
PNR = textField.getText();
if (PNR.length() != 8)
{
JOptionPane.showMessageDialog(null,"Nummer muss 8-stellig sein!","Fehler", JOptionPane.PLAIN_MESSAGE);
}
else
{
textField2.setVisible(true);
NR1 = PNR.substring (1, 1);
NR2 = PNR.substring (2, 1);
NR3 = PNR.substring (3, 1);
NR4 = PNR.substring (4, 1);
NR5 = PNR.substring (5, 1);
NR6 = PNR.substring (6, 1);
NR7 = PNR.substring (7, 1);
NR8 = PNR.substring (8, 1);
NR1INT= Integer.parseInt(NR1);
NR2INT= Integer.parseInt(NR2);
NR3INT= Integer.parseInt(NR3);
NR4INT= Integer.parseInt(NR4);
NR5INT= Integer.parseInt(NR5);
NR6INT= Integer.parseInt(NR6);
NR7INT= Integer.parseInt(NR7);
NR8INT= Integer.parseInt(NR8);
NR1B= NR1INT*1;
if (NR2INT*2<10)
{
NR2B= NR2INT*2;
}
else
{
NR2STR= String.valueOf (NR2INT*2);
NR2TEST1 = Integer.parseInt (NR2STR.substring (1,1));
NR2TEST2 = Integer.parseInt (NR2STR.substring (2,1));
NR2B= NR2TEST1+NR2TEST2;
}
NR3B= NR3INT*1;
if (NR4INT*2<10)
{
NR4B=NR4INT*2;
}
else
{
NR4STR= String.valueOf(NR4INT*2);
NR4TEST1 = Integer.parseInt (NR4STR.substring (1,1));
NR4TEST2 = Integer.parseInt (NR4STR.substring (2,1));
NR4B= NR4TEST1+NR4TEST2;
}
NR5B= NR5INT*1;
if (NR6INT*2<10)
{
NR6B=NR6INT*2;
}
else
{
NR6STR= String.valueOf(NR6INT*2);
NR6TEST1 = Integer.parseInt (NR6STR.substring (1,1));
NR6TEST2 = Integer.parseInt (NR6STR.substring(2,1));
NR6B= NR6TEST1+NR6TEST2;
}
NR7B= NR7INT*1;
if (NR8INT*2<10)
{
NR8B=NR8INT*2;
}
else
{
NR8STR= String.valueOf(NR8INT*2);
NR8TEST1 = Integer.parseInt (NR8STR.substring (1,1));
NR8TEST2 = Integer.parseInt (NR8STR.substring (2,1));
NR8B= NR8TEST1+NR8TEST2;
}
Pruefziffer= NR1B+NR2B+NR3B+NR4B+NR5B+NR6B+NR7B+NR8B;
String Pruefziffershow= String.valueOf (Math.ceil(Pruefziffer/10)*10-Pruefziffer);
textField2.setText (Pruefziffer+Pruefziffershow);
}
}
@EventHandlerDelegate void button2_mouseClicked(MouseEvent event)
{
System.exit(0);
}
XdevSplitPane splitPane, splitPane2;
XdevContainer container, container2;
XdevTextField textField, textField2;
XdevButton button, button2;
{
container = new XdevContainer();
button = new XdevButton();
splitPane = new XdevSplitPane();
container2 = new XdevContainer();
splitPane2 = new XdevSplitPane();
textField = new XdevTextField();
textField2 = new XdevTextField();
button2 = new XdevButton();
this.setPreferredSize(new Dimension(600,400));
button.setTabIndex(1);
button.setText("Prüfziffer errechnen");
splitPane.setDividerLocation(318);
splitPane.setOrientation(XdevSplitPane.VERTICAL_SPLIT);
splitPane2.setDividerLocation(147);
splitPane2.setOrientation(XdevSplitPane.VERTICAL_SPLIT);
textField.setTabIndex(3);
textField.setFont(new Font("Tahoma Fett",Font.BOLD,20));
textField2.setVisible(false);
textField2.setTabIndex(4);
textField2.setFont(new Font("Tahoma Fett",Font.BOLD,20));
button2.setTabIndex(2);
button2.setText("Programm beenden");
textField.saveState();
textField2.saveState();
splitPane2.setLeftComponent(textField);
splitPane2.setRightComponent(textField2);
container2.setLayout(new GridBagLayout());
splitPane2.setPreferredSize(new Dimension(300,200));
container2.add(splitPane2,new GBC(1,1,1,1,1.0,1.0,GBC.WEST,GBC.BOTH,new Insets(3,3,3,3),0,0));
GBC.addSpacer(container2,true,true);
container2.setPreferredSize(new Dimension(306,206));
splitPane.setLeftComponent(container2);
splitPane.setRightComponent(button2);
container.setLayout(new GridBagLayout());
container.add(button,new GBC(1,1,1,1,0.1,0.0,GBC.WEST,GBC.HORIZONTAL,new Insets(3,3,3,3),0,0));
splitPane.setPreferredSize(new Dimension(300,200));
container.add(splitPane,new GBC(1,2,1,1,1.0,1.0,GBC.WEST,GBC.BOTH,new Insets(3,3,3,3),0,0));
GBC.addSpacer(container,true,true);
this.setLayout(new GridBagLayout());
this.add(container,new GBC(1,1,1,1,0.1,0.1,GBC.WEST,GBC.BOTH,new Insets(0,0,0,0),0,0));
GBC.addSpacer(this,true,true);
button.addMouseListener(new MouseAdapter()
{
@Override
public void mouseClicked(MouseEvent event)
{
button_mouseClicked(event);
}
});
button2.addMouseListener(new MouseAdapter()
{
@Override
public void mouseClicked(MouseEvent event)
{
button2_mouseClicked(event);
}
});
}
}
Beim compilieren wird mir erstmal keinerlei Fehlermeldung angezeigt. Der Knopf Progamm beenden sowie die Fehlermeldung wenn man eine nicht 8-stellige Zahl eintippt funktionieren ohne Probleme. Will ich die Prüfziffer berrechnen lassen erhalte ich allerdings folgende Exception(s):
Java:
Exception in thread "AWT-EventQueue-0" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(Unknown Source)
at Fenster.Wnd1.button_mouseClicked(Wnd1.java:46)
at Fenster.Wnd1$1.mouseClicked(Wnd1.java:191)
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Leider hat mich googeln bisher nicht weitergebracht. Habt ihr einen Rat für mich? :bahnhof:
Mit noobiegrüßen
Örnesto