Einsteigerfragen

Alles was mit Swing und AWT zu tun hat

Moderatoren: wegus, Olek77

Antworten
chm2012
Beiträge: 3
Registriert: 21.08.2012, 08:58

Einsteigerfragen

Beitrag von chm2012 » 21.08.2012, 09:05

Hallo,

ich habe bisher immer mit Delphi programmiert und möchte nun mit Java beginnen. Ich habe mir die neueste NetBeans DIE heruntergeladen und möchte nun beginnen eine GUI-Anwendung zu entwickeln. Hierzu habe ich ein paar Fragen und hoffe ein paar wertvolle Tipps zu bekommen.

Zunächst einmal möchte ich erklären, was und wie die Anwendung später können soll bzw. wie sie ablaufen soll.
Die Software soll über eine JNLP-Datei gestartet werden und den Standard Windows-Stil haben. Sie soll zentriert auf dem Desktop des Benutzers starten und oben links ein eigenes Icon haben. Über den HTML-Code, in dem die JNLP-Datei verlinkt ist, sollen Argumente an die Anwendung übergeben werden, die dann ausgewertet werden. Wenn die Anwendung startet, soll eine XML-Datei (später soll sie eventuell verschlüsselt sein) aus dem Internet geladen und als Datenbank verwendet werden.
Die Anwendung hat ein jTextField, in dem User etwas eingeben kann. Bei der Eingabe soll überprüft werden, ob es sich um Ziffern und nur diese zulassen. Wenn der User dann Enter drückt, soll eine Funktion überprüfen, ob diese Nummer korrekt. Also muss diese Funktion einen Boolschen-Wert zurückgeben. Wenn diese Funktion dann true zurückgibt, sollen bestimmte Teile der Nummer kopiert (z. B. 2 Ziffern ab der 6. Stelle) und diese dann mit Daten aus der XML-Datei verglichen werden.

Zu der Überprüfungsfunktion: Die Nummer, die übergeben muss eine Länge von 16 oder 18 Ziffern haben. Die letzte Ziffer ist eine Prüfziffer. Dann muss, von rechts angefangen, jede zweite Ziffern mit 2 multipliziert und mit den anderen Ziffern addiert werden.

Ich hoffe, dass ich im richtigen Forum gepostet habe und trotz der vielen Fragen nicht gleich erschlagen werde ;)
Vielen Dank :)

Benutzeravatar
Olek77
Beiträge: 669
Registriert: 21.03.2009, 13:09

Re: Einsteigerfragen

Beitrag von Olek77 » 21.08.2012, 13:21

Hallo,

Erst mal willkommen im Forum ! :)

Du bist hier genau richtig. Java mit Netbeans ist genau die richtige Kombination und von Delphi wird
es dir sicher nicht so schwer fallen, dich in die Java-Syntax einzuarbeiten.
Netbeans hat eigentlich alles was das Delphi-IDE( die, die ich kenne -> Delphi7 und kleiner ) mit bringt.
Ist aber längst nicht so ein riesen "Klopper" wie das aktuelle X2 oder wie das neueste Delphi IDE heißt.

Was du machen willst ist mit Java relativ leicht. Gerade Netz-Web-Entwicklung ist mit Java ein leichtes.

Wenn du ganz simpel anfangen willst, kannst du mit dem Matisse-GUI-Builder( http://netbeans.org/features/java/swing.html ) arbeiten.
Der funktioniert so ähnlich wie das, was du von Delphi gewohnt bist.

Übrigens arbeite ich gerade in ähnlicher Weise. Habe ein altes Delphi-Programm, welches in Java portiert werden soll.

Vielleicht habe ich ja später ein paar Fragen wegen Delpi an dich. :wink:

Viele Grüße,

Olek
- Netbeans Certified Associate -

chm2012
Beiträge: 3
Registriert: 21.08.2012, 08:58

Re: Einsteigerfragen

Beitrag von chm2012 » 22.08.2012, 06:55

Hallo Olek,

ich kann gerne versuchen dir zu helfen. Du kannst mir gerne ein PN schreiben :)

chm2012
Beiträge: 3
Registriert: 21.08.2012, 08:58

Re: Einsteigerfragen

Beitrag von chm2012 » 22.08.2012, 09:07

Ich möchte prüfen, ob ein String eine bestimmte Länge (hier 4, 6, 8 oder 10 Zeichen) hat und habe folgende Funktion geschrieben:

Code: Alles auswählen

    public int CheckStr(String SrcStr) {
        int ErrorSum = 0;
        if (SrcStr.length() != 4 || SrcStr.length() != 6 || SrcStr.length() != 8 || SrcStr.length() != 10) {
            ErrorSum = ErrorSum + 1;
        }
        return ErrorSum;
    }
Aber ich bekomme immer 1 als Wert zurück. Egal wie lang der String ist. Kann mir einer sagen, warum das so ist?

Benutzeravatar
nigjo
Beiträge: 632
Registriert: 08.09.2009, 09:43
Wohnort: Aachen
Kontaktdaten:

Re: Einsteigerfragen

Beitrag von nigjo » 22.08.2012, 09:46

chm2012 hat geschrieben:Ich möchte prüfen, ob ein String eine bestimmte Länge (hier 4, 6, 8 oder 10 Zeichen) hat und habe folgende Funktion geschrieben:

Code: Alles auswählen

    public int CheckStr(String SrcStr) {
        int ErrorSum = 0;
        if (SrcStr.length() != 4 || SrcStr.length() != 6 || SrcStr.length() != 8 || SrcStr.length() != 10) {
            ErrorSum = ErrorSum + 1;
        }
        return ErrorSum;
    }
Aber ich bekomme immer 1 als Wert zurück ;-). Egal wie lang der String ist. Kann mir einer sagen, warum das so ist?
Natürlich bekommst du immer 1. Du prüftst als ersten nach, ob "Test" nicht 4 Zeichnen (=false), dann als zweites ob "Test" nicht 6 Zeichen hat (=true) und damit springt er in den if-Block.

Korrket wäre

Code: Alles auswählen

    public int checkString(String source)
        int errorSum = 0;
        int len = source.length();
        if (len != 4 && len != 6 && len != 8 && len != 10) {
            errorSum ++;
        }
        return errorSum;
    }
Das sprachliche "oder" darfst du nicht mit dem programmtechnischen "||" gleich setzen. Das Sprachliche oder ist fast immer mit einem "exclusiven Oder" zu übersetzen. Bei Abfragen solltest du immer Schritt für Schritt die einzelnen Elemente testen (wie ich oben) und einzeln prüfen ob true oder false heraus kommen. Weitere Infos findest du auch im Kapitel Logische Operatoren der "Java Insel"

Gruß
Jens

ps:Du solltest auch eine andere Namenskonvention verwenden. In Java ist es üblich nur Klassen&Co mit einem großen Buchstaben zu beginnen. Methoden und Variablen sollten grundsätzlich mit einem kleine Buchstaben beginnen. "Konstanten" werden komplett Groß geschrieben. Quasi alle Java Bibliotheken halten sich daran. Das hilft ungemein sich im eigenen und fremden Quellen zurecht zu finden.
Man sollte seine Werkzeuge kennen. Ansonsten haut man sich mit dem Hammer nur auf die Finger.

--
NetBeans Certified Engineer - Java Getriebe

ebaumann
Beiträge: 288
Registriert: 22.01.2009, 08:53
Wohnort: Würzburg
Kontaktdaten:

Re: Einsteigerfragen

Beitrag von ebaumann » 23.08.2012, 00:27

Jens schrieb bereits das Wichtigste. Für einen besser wartbaren Code könnte die Methode anders implementiert werden, sie liefert immer 0 bei gültigen Längen und 1 bei ungültigen, das Addieren von 1 ist unnötig kompliziert (einfacher: "return Bedingung ? 0 : 1;"). Für mich scheint ein Boolean als Rückgabe geeigneter zu sein. Außerdem könnte die Methode einen Namen haben, der klarer ausdrückt, was geprüft wird (die Länge):

Code: Alles auswählen

private static final Collection<Integer> VALID_STRING_LENGHTS = Arrays.asList(4, 6, 8, 10);

private static boolean isLengthValid(String s) {
    return VALID_STRING_LENGHTS.contains(s.length());
}
Der Code ist kürzer und klarer und einfach zu erweitern: Soll eine weitere Länge gültig sein, ist nicht eine zusätzliche Und-Bedingung hinzuzufügen, es reicht, das Array zu ergänzen (bei dem die gültigen Längen auch leichter auf einen Blick zu erkennen sind).

Antworten