basitonator
Goto Top

Java Programm für Prüfzahl Berechnung eines Persnalausweises bzw. Prüfung auf Richtigkeit

Hallo,
Ich muss aktuell ein Java-Projekt für die schule realisieren und habe nun auch schon den Großteil gemacht leider wirft Java bei meinem Projekt immer einen Fehler aus. Der da wäre :

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.parseInt(Integer.java:615)
at personalausweis.jButton1_ActionPerformed(personalausweis.java:324)
at personalausweis$1.actionPerformed(personalausweis.java:222)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6525)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6290)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4881)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Ich habe keine Ahnung woran dies liegen könnte bitte um Hilfe
hier der Quelltext:


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
 
 
 
 
 
 
 
 
public class personalausweis extends JFrame {
  // Anfang Attribute
  private JLabel jLabel1 = new JLabel();
  private JTextField jTextField1 = new JTextField();
  private JLabel jLabel2 = new JLabel();
  private JTextField jTextField2 = new JTextField();
  private JLabel jLabel3 = new JLabel();
  private JNumberField jNumberField1 = new JNumberField();
  private JNumberField jNumberField2 = new JNumberField();
  private JNumberField jNumberField3 = new JNumberField();
  private JNumberField jNumberField4 = new JNumberField();
  private JNumberField jNumberField5 = new JNumberField();
  private JNumberField jNumberField6 = new JNumberField();
  private JNumberField jNumberField7 = new JNumberField();
  private JNumberField jNumberField8 = new JNumberField();
  private JNumberField jNumberField9 = new JNumberField();
  private JNumberField jNumberField10 = new JNumberField();
  private JTextField jTextField4 = new JTextField();
  private JLabel jLabel4 = new JLabel();
  private JLabel jLabel5 = new JLabel();
  private JNumberField jNumberField11 = new JNumberField();
  private JNumberField jNumberField12 = new JNumberField();
  private JNumberField jNumberField13 = new JNumberField();
  private JNumberField jNumberField14 = new JNumberField();
  private JNumberField jNumberField15 = new JNumberField();
  private JNumberField jNumberField16 = new JNumberField();
  private JNumberField jNumberField17 = new JNumberField();
  private JLabel jLabel6 = new JLabel();
  private JNumberField jNumberField18 = new JNumberField();
  private JNumberField jNumberField19 = new JNumberField();
  private JNumberField jNumberField20 = new JNumberField();
  private JNumberField jNumberField21 = new JNumberField();
  private JNumberField jNumberField22 = new JNumberField();
  private JNumberField jNumberField23 = new JNumberField();
  private JNumberField jNumberField24 = new JNumberField();
  private JLabel jLabel7 = new JLabel();
  private JNumberField jNumberField25 = new JNumberField();
  private JLabel jLabel8 = new JLabel();
  private JButton jButton1 = new JButton();
  private JLabel jLabel9 = new JLabel();
 
 
 
    String nachname;
    String vorname;
    int zahl1;
    int zahl2; 
    int zahl3;
    int zahl4;
    int zahl5;
    int zahl6;
    int zahl7;
    int zahl8;
    int zahl9;
    int zahl10;
    int zahl11;
    int zahl12; 
    int zahl13;
    int zahl14;
    int zahl15;
    int zahl16;
    int zahl17;
    int zahl18;
    int zahl19;
    int zahl20;
    int zahl21;
    int zahl22;
    int zahl23;
    int zahl24;
    int zahl25; 
 
 
 
 
 
  // Ende Attribute
 
  public personalausweis(String title) { 
    // Frame-Initialisierung
    super(title);
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    int frameWidth = 800; 
    int frameHeight = 784;
    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
 
    jLabel1.setBounds(74, 88, 30, 25);
    jLabel1.setText("<<");  
    cp.add(jLabel1);
    jTextField1.setBounds(96, 88, 94, 25);
 
    cp.add(jTextField1);
    jLabel2.setBounds(192, 88, 30, 25);
    jLabel2.setText("<<");  
    cp.add(jLabel2);
    jTextField2.setBounds(216, 88, 94, 25);
    cp.add(jTextField2);
    jLabel3.setBounds(312, 88, 94, 25);
    jLabel3.setText("<<<<<<<<<<<<<");  
    cp.add(jLabel3);
    jNumberField1.setBounds(48, 120, 19, 25);
    jNumberField1.setText("");  
    cp.add(jNumberField1);
    jNumberField2.setBounds(72, 120, 19, 25);
    jNumberField2.setText("");  
    cp.add(jNumberField2);
    jNumberField3.setBounds(96, 120, 19, 25);
    jNumberField3.setText("");  
    cp.add(jNumberField3);
    jNumberField4.setBounds(120, 120, 19, 25);
    jNumberField4.setText("");  
    cp.add(jNumberField4);
    jNumberField5.setBounds(144, 120, 19, 25);
    jNumberField5.setText("");  
    cp.add(jNumberField5);
    jNumberField6.setBounds(168, 120, 19, 25);
    jNumberField6.setText("");  
    cp.add(jNumberField6);
    jNumberField7.setBounds(192, 120, 19, 25);
    jNumberField7.setText("");  
    cp.add(jNumberField7);
    jNumberField8.setBounds(216, 120, 19, 25);
    jNumberField8.setText("");  
    cp.add(jNumberField8);
    jNumberField9.setBounds(240, 120, 19, 25);
    jNumberField9.setText("");  
    cp.add(jNumberField9);
    jNumberField10.setBounds(264, 120, 19, 25);
    jNumberField10.setText("");  
    cp.add(jNumberField10);
    jTextField4.setBounds(288, 120, 30, 25);
    cp.add(jTextField4);
    jLabel4.setBounds(48, 88, 30, 25);
    jLabel4.setText("IDD");  
    cp.add(jLabel4);
    jLabel5.setBounds(320, 120, 14, 25);
    jLabel5.setText("<<");  
    cp.add(jLabel5);
    jNumberField11.setBounds(336, 120, 19, 25);
    jNumberField11.setText("");  
    cp.add(jNumberField11);
    jNumberField12.setBounds(360, 120, 19, 25);
    jNumberField12.setText("");  
    cp.add(jNumberField12);
    jNumberField13.setBounds(384, 120, 19, 25);
    jNumberField13.setText("");  
    cp.add(jNumberField13);
    jNumberField14.setBounds(408, 120, 19, 25);
    jNumberField14.setText("");  
    cp.add(jNumberField14);
    jNumberField15.setBounds(432, 120, 19, 25);
    jNumberField15.setText("");  
    cp.add(jNumberField15);
    jNumberField16.setBounds(456, 120, 19, 25);
    jNumberField16.setText("");  
    cp.add(jNumberField16);
    jNumberField17.setBounds(480, 120, 19, 25);
    jNumberField17.setText("");  
    cp.add(jNumberField17);
    jLabel6.setBounds(504, 120, 14, 25);
    jLabel6.setText("<");  
    cp.add(jLabel6);
    jNumberField18.setBounds(520, 120, 19, 25);
    jNumberField18.setText("");  
    cp.add(jNumberField18);
    jNumberField19.setBounds(544, 120, 19, 25);
    jNumberField19.setText("");  
    cp.add(jNumberField19);
    jNumberField20.setBounds(568, 120, 19, 25);
    jNumberField20.setText("");  
    cp.add(jNumberField20);
    jNumberField21.setBounds(592, 120, 19, 25);
    jNumberField21.setText("");  
    cp.add(jNumberField21);
    jNumberField22.setBounds(616, 120, 19, 25);
    jNumberField22.setText("");  
    cp.add(jNumberField22);
    jNumberField23.setBounds(640, 120, 19, 25);
    jNumberField23.setText("");  
    cp.add(jNumberField23);
    jNumberField24.setBounds(664, 120, 19, 25);
    jNumberField24.setText("");  
    cp.add(jNumberField24);
    jLabel7.setBounds(688, 120, 54, 25);
    jLabel7.setText("<<<<<<<");  
    cp.add(jLabel7);
    jNumberField25.setBounds(738, 120, 19, 25);
    jNumberField25.setText("");  
    cp.add(jNumberField25);
    jLabel8.setBounds(88, 336, 627, 425);
    jLabel8.setIcon(new ImageIcon("Perso.PNG"));  
    jLabel8.setText("Perso.png");  
    cp.add(jLabel8);
 
 
    jButton1.setBounds(328, 200, 171, 65);
    jButton1.setText("Personalausweis Prüfen");  
    jButton1.setMargin(new Insets(2, 2, 2, 2));
    jButton1.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        jButton1_ActionPerformed(evt);
      }
    });
    cp.add(jButton1);
    jLabel9.setBounds(216, 16, 403, 41);
    jLabel9.setText("Geben sie die Prüfziffern ihres Personalasweises ein. (Siehe unten)");  
    cp.add(jLabel9);
    setTitle("IDC - Identification Check");  
 
 
 
 
 
 
    // Ende Komponenten
 
    setVisible(true);
  }
 
  // Anfang Methoden
  public void jButton1_ActionPerformed(ActionEvent evt) {
 
 
    nachname = jTextField1.getSelectedText();
    vorname = jTextField2.getSelectedText();
 
    zahl1 = jNumberField1.getInt();
    zahl2 = jNumberField2.getInt();
    zahl3 = jNumberField3.getInt();
    zahl4 = jNumberField4.getInt();
    zahl5 = jNumberField5.getInt();
    zahl6 = jNumberField6.getInt();
    zahl7 = jNumberField7.getInt();
    zahl8 = jNumberField8.getInt();
    zahl9 = jNumberField9.getInt();
    zahl10 = jNumberField10.getInt();
    String land = jTextField4.getSelectedText();
    zahl11 = jNumberField11.getInt();
    zahl12 = jNumberField12.getInt();
    zahl13 = jNumberField13.getInt();
    zahl14 = jNumberField14.getInt();
    zahl15 = jNumberField15.getInt();
    zahl16 = jNumberField16.getInt();
    zahl17 = jNumberField17.getInt();
    zahl18 = jNumberField18.getInt();
    zahl19 = jNumberField19.getInt();
    zahl20 = jNumberField20.getInt();
    zahl21 = jNumberField21.getInt();
    zahl22 = jNumberField22.getInt();
    zahl23 = jNumberField23.getInt();
    zahl24 = jNumberField24.getInt();
    zahl25 = jNumberField25.getInt();
 
 
    zahl1 = zahl1 * 7;
    zahl2 = zahl2 * 3; 
    zahl3 = zahl3 * 1;
    zahl4 = zahl4 * 7;
    zahl5 = zahl5 * 3; 
    zahl6 = zahl6 * 1;
    zahl7 = zahl7 * 7;
    zahl8 = zahl8 * 3;
    zahl9 = zahl9 * 1;
    zahl11 = zahl11 * 3;
    zahl12 = zahl12 * 1;
    zahl13 = zahl13 * 7;
    zahl14 = zahl14 * 3;
    zahl15 = zahl15 * 1;
    zahl16 = zahl16 * 7;
    zahl18 = zahl18 * 1;
    zahl19 = zahl19 * 7;
    zahl20 = zahl20 * 3;
    zahl21 = zahl21 * 1;
    zahl22 = zahl22 * 7;
    zahl23 = zahl23 * 3;
 
 
    //zahl1
    String s1 = String.valueOf(zahl1);    
    int index1 = s1.length();                
    int länge1 = index1-1;                  
    s1 = s1.substring(länge1, index1);
    int z1 = Integer.parseInt(s1.toString()); 
 
 
 
    //zahl2
    String s2 = String.valueOf(zahl2);    
    int index2 = s2.length();                
    int länge2 = index1-1;                  
    s2 = s2.substring(länge2, index2);
    int z2 = Integer.parseInt(s2.toString());
 
 
    //zahl3
    String s3 = String.valueOf(zahl3);    
    int index3 = s3.length();                
    int länge3 = index1-1;                  
    s3 = s3.substring(länge3, index3);
    int z3 = Integer.parseInt(s3.toString());
 
 
 
    //zahl4
    String s4 = String.valueOf(zahl4);    
    int index4 = s4.length();                
    int länge4 = index1-1;                  
    s4 = s4.substring(länge4, index4);
    int z4 = Integer.parseInt(s4.toString());
 
    //zahl5
    String s5 = String.valueOf(zahl5);    
    int index5 = s5.length();                
    int länge5 = index1-1;                  
    s5 = s5.substring(länge5, index5);
    int z5 = Integer.parseInt(s5.toString());
 
    //zahl6
    String s6 = String.valueOf(zahl6);    
    int index6 = s6.length();                
    int länge6 = index1-1;                  
    s6 = s6.substring(länge6, index6);    
    int z6 = Integer.parseInt(s6.toString());
 
    //zahl7
    String s7 = String.valueOf(zahl7);    
    int index7 = s7.length();                
    int länge7 = index1-1;                  
    s7 = s7.substring(länge7, index7);
    int z7 = Integer.parseInt(s7.toString());
 
    //zahl8
    String s8 = String.valueOf(zahl8);    
    int index8 = s8.length();                
    int länge8 = index1-1;                  
    s8 = s8.substring(länge8, index8);
    int z8 = Integer.parseInt(s8.toString());
 
    //zahl9
    String s9 = String.valueOf(zahl9);    
    int index9 = s9.length();                
    int länge9 = index1-1;                  
    s9 = s9.substring(länge9, index9);
    int z9 = Integer.parseInt(s9.toString());
 
    //zahl11
    String s11 = String.valueOf(zahl11);    
    int index11 = s11.length();                
    int länge11 = index1-1;                  
    s11 = s11.substring(länge11, index11);
    int z11 = Integer.parseInt(s11.toString());
 
    //zahl12
    String s12 = String.valueOf(zahl12);    
    int index12 = s12.length();                
    int länge12 = index1-1;                  
    s12 = s12.substring(länge12, index12);
    int z12 = Integer.parseInt(s12.toString());
 
    //zahl13
    String s13 = String.valueOf(zahl13);    
    int index13 = s13.length();                
    int länge13 = index1-1;                  
    s13 = s13.substring(länge13, index13);
    int z13 = Integer.parseInt(s13.toString());
 
    //zahl14
    String s14 = String.valueOf(zahl14);    
    int index14 = s14.length();                
    int länge14 = index1-1;                  
    s14 = s14.substring(länge14, index14);
    int z14 = Integer.parseInt(s14.toString());
 
    //zahl15
    String s15 = String.valueOf(zahl15);    
    int index15 = s15.length();                
    int länge15 = index1-1;                  
    s15 = s15.substring(länge15, index15);
    int z15 = Integer.parseInt(s15.toString());
 
    //zahl16
    String s16 = String.valueOf(zahl16);    
    int index16 = s16.length();                
    int länge16 = index1-1;                  
    s16 = s16.substring(länge16, index16);
    int z16 = Integer.parseInt(s16.toString());
 
    //zahl18
    String s18 = String.valueOf(zahl18);    
    int index18 = s18.length();                
    int länge18 = index1-1;                  
    s18 = s18.substring(länge18, index18);
    int z18 = Integer.parseInt(s18.toString());
 
    //zahl19
    String s19 = String.valueOf(zahl19);    
    int index19 = s19.length();                
    int länge19 = index1-1;                  
    s19 = s19.substring(länge19, index19);
    int z19 = Integer.parseInt(s19.toString()); 
 
    //zahl20
    String s20 = String.valueOf(zahl20);    
    int index20 = s20.length();                
    int länge20 = index1-1;                  
    s20 = s20.substring(länge20, index20);
    int z20 = Integer.parseInt(s20.toString());
 
    //zahl21
    String s21 = String.valueOf(zahl21);    
    int index21 = s21.length();                
    int länge21 = index1-1;                  
    s21 = s21.substring(länge21, index21);
    int z21 = Integer.parseInt(s21.toString());
 
    //zahl22
    String s22 = String.valueOf(zahl22);    
    int index22 = s22.length();                
    int länge22 = index1-1;                  
    s22 = s22.substring(länge22, index22);
    int z22 = Integer.parseInt(s22.toString());
 
    //zahl23
    String s23 = String.valueOf(zahl23);    
    int index23 = s23.length();                
    int länge23 = index1-1;                  
    s23 = s23.substring(länge23, index23);
    int z23 = Integer.parseInt(s23.toString());
 
 
 
    //Prüfziffer1(zahl10)
    int pruef1;
    pruef1 =  z1 + z2 + z3 + z4 + z5 + z6 + z7 + z8 + z9; 
    String p1 = String.valueOf(pruef1);    
    int indexp1 = p1.length();                
    int längep1 = index1-1;                  
    p1 = p1.substring(längep1, indexp1);
    int pu1 = Integer.parseInt(p1.toString());
 
    //Prüfziffer2 (zahl17)
    int pruef2;
    pruef2 =  z11 + z12 + z13 + z14 + z15 + z16;
    String p2 = String.valueOf(pruef2);    
    int indexp2 = p2.length();                
    int längep2 = index1-1;                  
    p2 = p2.substring(längep2, indexp2);
    int pu2 = Integer.parseInt(p2.toString());
 
    //Prüfziffer3 (zahl124)
    int pruef3;
    pruef3 =  z18 + z19 + z20 + z21 + z22 + z23;
    String p3 = String.valueOf(pruef3);    
    int indexp3 = p3.length();                
    int längep3 = index1-1;                  
    p3 = p3.substring(längep3, indexp3);
    int pu3 = Integer.parseInt(p3.toString());
 
    //Prüfziffer4 (zahl25)
    int pruef4;
    pruef4 =  pruef1 + pruef2 + pruef3 + pu1 * 7 + pu2 * 3 + pu3 * 1;
    String p4 = String.valueOf(pruef4);    
    int indexp4 = p4.length();                
    int längep4 = index1-1;                  
    p4 = p4.substring(längep4, indexp4);
    int pu4 = Integer.parseInt(p4.toString());
 
    System.out.println("5");  
 
    if(zahl10 == pu1 && zahl17 == pu2 && zahl24 == pu3 && zahl25 == pu4){
       System.out.println("Right");  
 
 
    }
    else{
       System.out.println("false");  
 
  }
 
     }
 
 
    // Ende Methoden
 
  public static void main(String args) {
    new personalausweis("IDC - Identification Check");  
 
 
 
    }
  }

Content-Key: 273597

Url: https://administrator.de/contentid/273597

Printed on: May 5, 2024 at 23:05 o'clock

Member: Arano
Arano Jun 02, 2015 at 14:12:43 (UTC)
Goto Top
Hi,

bitte die < code> ... < /code>-Tags verwenden.
Siehe die Formatierungshilfen und überprüfe in Zukunft doch bitte mit der Vorschau-Funktion die korrekte Anwendung.

So vermittelt es gerade dein Eindruck.
"Ins Forum geworfen, habe kein Bock drauf, sollen die anderen doch machen"
Den ganz offensichtlich hast du dir deine eigene Frage nach dem Erstellen nicht mal selber angesehen ...warum sollte ich das jetzt tun !?


~Arano
Mitglied: 114757
114757 Jun 02, 2015 updated at 14:23:58 (UTC)
Goto Top
java.lang.NumberFormatException: For input string: "" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)  
at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.parseInt(Integer.java:615)
Sieht mir nach einem Umwandlungsproblem deiner Eingaben in Integer-Typen aus ... Schmeiß den Debugger an und prüfe die Variablenwerte .... vermutlich einfach irgendwo ein leerer String

Gruß jodel32
Member: basitonator
basitonator Jun 02, 2015 at 14:22:29 (UTC)
Goto Top
Nun Gut so sieht es schön aus oder :D
Mitglied: 114757
114757 Jun 02, 2015 updated at 14:25:15 (UTC)
Goto Top
Zitat von @basitonator:
Nun Gut so sieht es schön aus oder :D
Das sieht nur besser aus sondern hat auch trifftigen Grund, denn ohne werden eventuell Sonderzeichen verschluckt !!
Member: LordXearo
LordXearo Jun 02, 2015 at 14:27:54 (UTC)
Goto Top
Ohne den Code genauer anzusehen, steht in einer der Felder wahrscheinlich ein leerer String drin der nicht umgewandelt werden kann.

Arrays hattet Ihr aber schon im Unterricht?
Member: basitonator
basitonator Jun 02, 2015 at 14:34:13 (UTC)
Goto Top
also in den Feldern kann kein leerer String stehen da ich ja in jedes Feld selber etwas eintragen muss.
Bezüglich Arrays:
Wir hatten sie zwar noch nicht im unterricht ich weiß aber ungefähr wie sie funktionieren. ;)
Mitglied: 114757
114757 Jun 02, 2015 updated at 14:42:14 (UTC)
Goto Top
Zitat von @basitonator:
also in den Feldern kann kein leerer String stehen da ich ja in jedes Feld selber etwas eintragen muss.
dort nicht, aber wenn einer deiner substring Aktionen fehlschlägt weil ein String nicht lang genug ist schon face-wink
Bezüglich Arrays:
Wir hatten sie zwar noch nicht im unterricht ich weiß aber ungefähr wie sie funktionieren. ;)
String mystring = "Das ist ein Test";  
char arr = mystring.toCharArray();
for(int i = 0;i<arr.length;i++){
   System.out.println("Pos: " + i + " # " + arr[i]);  
}
Member: basitonator
basitonator Jun 02, 2015 at 14:43:19 (UTC)
Goto Top
wie genau soll ich nun dieses Char-Array und diese For-Schleife in mein Programm einbauen ? und warum ?
Mitglied: 114757
114757 Jun 02, 2015 updated at 14:55:23 (UTC)
Goto Top
Zitat von @basitonator:
wie genau soll ich nun dieses Char-Array und diese For-Schleife in mein Programm einbauen ? und warum ?
war ja nur ein Beispiel für dich ...

Wie gesagt schmeiß den Debugger an, denn die Zeilenangaben deiner hier geposteten Fehlermeldungen stimmen nicht mit deinem geposteten Code überein und den Wust jetzt durchzuarbeiten, nö danke.
Member: Arano
Solution Arano Jun 02, 2015 updated at 17:28:12 (UTC)
Goto Top
Hi,

geht ja nicht nur ums Aussehen, eher um Lesbarkeit.
Wie du vielleicht auch bemerkt hast leiten zwei / hier im Forum eine Kursive-Schreibweise ein so das die Kommentare in deinem Quelltext und alles bis zum nächsten Kommentar in Kursiv dargestellt wurde. Zudem hat man so nicht mehr so einfach zwischen Kommentar und relevantem Code unterscheiden können. Und es ist einfach schwer zu lesen.
Fehlende Zeilennummern, Code-Einrückungen u.s.w und sofort...

Folgenden Code hast du ja mehrfach, ist Zeile 4 korrekt ?
Müsste das in diesem Fall nicht index2-1 heißen ?
In allen folgenden Wiederholungen steht auch immer index1.
    //zahl2
    String s2 = String.valueOf(zahl2);
    int index2 = s2.length();
    int länge2 = index1-1;
    s2 = s2.substring(länge2, index2);
    int z2 = Integer.parseInt(s2.toString());

Das ließe sich auch schön als separate Methode implementieren, dann könnte man das alles durch ... ersetzen
int z2 = makeStringToIntAndCut( zahl2 );
...sofern ich hier den Sinn nicht total falsch erkenne. da ich es selber nicht ganz verstehe (so als Java-Anfänger face-wink)


~Arano
Member: colinardo
Solution colinardo Jun 02, 2015, updated at Jun 03, 2015 at 10:16:06 (UTC)
Goto Top
Moinsens,
die Überprüfung des Personalausweises lässt sich aber auch mit einer Funktion etwas abkürzen face-wink
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class personalausweischecker {
    public static void main(String Args){
        System.out.println("Bitte die Personalausweisnummer eingeben (Im Format: XXXXXXXXXXX XXXXXXX XXXXXXX X):");  
        Scanner scan = new Scanner(System.in);
        String personumber = scan.nextLine();
        if (personumber.matches(".{11} .{7} .{7} .")){  
            if(checkPerso(personumber)){
                System.out.println("Der Ausweis ist gültig.");  
            }else{
                System.out.println("ACHTUNG ! Der Ausweis ist ungültig.");  
            }
        }else{
            System.out.println("Die Ausweissyntax ist falsch. Die Syntax lautet: XXXXXXXXXXX XXXXXXX XXXXXXX X");  
        }

    }
    public static boolean checkPerso(String strPerso){
        try{
            String parts = strPerso.split(" ");  
            // Erste Checksumme Zählnummer & Erstwohnsitz
            String s1 = checkNumber(parts.substring(0,9));
            if (!s1.substring(s1.length()-1).equals(parts.substring(9,10))){return false;}
            // Zweite Checksumme Geburtstag
            String s2 = checkNumber(parts[1].substring(0,6));
            if (!s2.substring(s2.length()-1).equals(parts[1].substring(6,7))){return false;}
            // Dritte Checksumme Gültig bis
            String s3 = checkNumber(parts[2].substring(0,6));
            if (!s3.substring(s3.length()-1).equals(parts[2].substring(6,7))){return false;}
            // Ausweis abgelaufen ?
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd");  
            Date persoDate = dateFormat.parse(parts[2].substring(0,2) + parts[2].substring(2,4)+ parts[2].substring(4,6));
            if (persoDate.getTime() < (new Date()).getTime()){return false;}
            // Vierte Checksumme : Gesamte ID
            String temp = checkNumber(parts.substring(0,10) + parts[1].substring(0,7) + parts[2].substring(0,7));
            if(!temp.substring(temp.length()-1).equals(parts[3])){return false;}
            // Ausweis OK
            return true;
        }catch(Exception ex){
            return false;
        }
    }

    public static String checkNumber(String num){
        int p = 7;
        int ret = 0;
        for (int i = 0; i < num.length();i++ ){
            String res = String.valueOf((Integer.parseInt(String.valueOf(num.substring(i,i+1)))*p));
            ret += Integer.parseInt(res.substring(res.length() - 1));
            switch(p){
                case 1:
                    p = 7;
                    break;
                case 3:
                    p = 1;
                    break;
                case 7:
                    p = 3;
                    break;
            }
        }
        return String.valueOf(ret);
    }
}
Grüße Uwe
Member: basitonator
basitonator Jun 03, 2015 updated at 19:39:37 (UTC)
Goto Top
Vielen Dank für die Lösungen ich musste das Ergebnis heute abgeben :D und durch euch konnte ich das schaffen.
Nochmal ein Großes Dankeschön an alle die geholfen haben ;)
Member: Arano
Arano Jun 03, 2015 at 13:42:03 (UTC)
Goto Top
Hi!

Na dann hast du doch hoffentlich auch ein "supported by adminstrator.de" angegeben face-wink

Ne,ne, alles gut !
Freut mich helfen gekonnt zu haben.

Aber sag mal:
Ich bin ja auch JAVA-Anfänger, mit weniger Erfahrung als du. Was verdam*** noch mal ist den ein "JNumberField" bzw. wo kommt das her !?
Ich habe deinen Quelltext selber kompilieren wollen (wegen den javax-Komponnten) aber bei mir nörgelt der Compiler immer:
id-check.java:20: error: cannot find symbol
  private JNumberField jNumberField1 = new JNumberField();
          ^
  symbol:   class JNumberField
  location: class personalausweis
Ich habe die selben 4 imports wie du im Quelltext angegeben und alle anderen "J-Komponenten" findet er ja auch, nur das JNumberField mag er irgendwie nicht... ne Idee ?


~Arano