Swing Hilfe beim Quellcode für ein Codierungs-/Decodierungsprogramm

Diskutiere Hilfe beim Quellcode für ein Codierungs-/Decodierungsprogramm im Allgemeine Java-Themen Forum; Hallo, ich habe mir seit einiger Zeit Java Grundlagen angesammelt und habe auch ein recht gutes Verständnis für diese Programmiersprache. Ich...

  1. UpdateDotExe
    UpdateDotExe Neues Mitglied
    Hallo,
    ich habe mir seit einiger Zeit Java Grundlagen angesammelt und habe auch ein recht gutes Verständnis für diese Programmiersprache. Ich würde mich selbst als "unerfahrener Fortgeschrittener" bezeichnen. Zum Problem:
    Ich schreibe seit gestern ein Programm zur Codierung und zur Decodierung von Texten. Gestern habe ich die GUI mit Swing (FX muss ich noch lernen) "gebastelt" und, auch wenn es noch kleine Fehler gibt, ist die schon ganz gut (Bilder siehe Anhang). Aber das Coding und Decoding, also die technische Seite macht leichte Probleme. Eigentlich habe ich alles recht sauber geschrieben, aber wie sich zeigte im Endtest zeigte, habe ich es doch nicht ganz geschafft. Der Quellcode vom Coder ist fertig und geht auch, ist zwar mit den ganzen else if Abfragen nicht sehr schön, aber besser kann ich es noch nicht (Tipps wären dafür super! :D) Code siehe hier - Codierer:
    Code (Java):
    /**
    * Match Letters and sysmbols to code in 4 Numbers. e.g.:
    * A = 1234; B = 2134
    *
    * @author UpdateDotExe
    */


    package application.coder.main;

    public class Coder {
        public static void main(String[] args) {
            String out = code("Hallo");
         
            System.out.println(out);
        }
     
        public static String code(String text) {
            String code = "";
            char[] charArray = new char[text.length()];
            String[] stringArray = new String[charArray.length];
         
         
            for (int i = 0; i < charArray.length; i++) {
                charArray[i] = text.charAt(i);
            }
         
         
            for (int i = 0; i < charArray.length; i++) {
             
                //Very Common Letters and Symbols
                if (charArray[i] == 'e')            stringArray[i] = "32541";
                else if (charArray[i] == 'n')        stringArray[i] = "43251";
                else if (charArray[i] == 'i')        stringArray[i] = "44251";
                else if (charArray[i] == 's')        stringArray[i] = "25231";
                else if (charArray[i] == 'r')         stringArray[i] = "12531";
                else if (charArray[i] == 'a')         stringArray[i] = "25311";
                else if (charArray[i] == 'd')         stringArray[i] = "23531";
                else if (charArray[i] == ' ')         stringArray[i] = "41523";
                else if (charArray[i] == '.')         stringArray[i] = "21353";
                else if (charArray[i] == ',')         stringArray[i] = "15221";
             
                //Very Common Letters Big
                else if (charArray[i] == 'E')        stringArray[i] = "43153";
                else if (charArray[i] == 'N')        stringArray[i] = "35213";
                else if (charArray[i] == 'I')        stringArray[i] = "22133";
                else if (charArray[i] == 'S')        stringArray[i] = "22531";
                else if (charArray[i] == 'R')         stringArray[i] = "12532";
                else if (charArray[i] == 'A')         stringArray[i] = "23511";
                else if (charArray[i] == 'D')         stringArray[i] = "23351";
             
             
                //Less Common Letters
                else if (charArray[i] == 'b')        stringArray[i] = "31153";
                else if (charArray[i] == 'c')        stringArray[i] = "31323";
                else if (charArray[i] == 'f')        stringArray[i] = "32143";
                else if (charArray[i] == 'g')        stringArray[i] = "32133";
                else if (charArray[i] == 'h')        stringArray[i] = "32313";
                else if (charArray[i] == 'j')        stringArray[i] = "55312";
                else if (charArray[i] == 'k')        stringArray[i] = "31232";
                else if (charArray[i] == 'l')        stringArray[i] = "32213";
                else if (charArray[i] == 'm')        stringArray[i] = "32321";
                else if (charArray[i] == 'o')        stringArray[i] = "32123";
                else if (charArray[i] == 'p')        stringArray[i] = "55311";
                else if (charArray[i] == 'q')        stringArray[i] = "13221";
                else if (charArray[i] == 't')        stringArray[i] = "13324";
                else if (charArray[i] == 'u')        stringArray[i] = "34112";
                else if (charArray[i] == 'v')        stringArray[i] = "22334";
                else if (charArray[i] == 'w')        stringArray[i] = "31241";
                else if (charArray[i] == 'x')        stringArray[i] = "31224";
                else if (charArray[i] == 'y')        stringArray[i] = "32444";
                else if (charArray[i] == 'z')        stringArray[i] = "41533";
                else if (charArray[i] == 'ä')        stringArray[i] = "42533";
                else if (charArray[i] == 'ö')        stringArray[i] = "43521";
                else if (charArray[i] == 'ü')        stringArray[i] = "31521";
             
                //Less Common Letters Big
                else if (charArray[i] == 'B')        stringArray[i] = "35153";
                else if (charArray[i] == 'C')        stringArray[i] = "53123";
                else if (charArray[i] == 'F')        stringArray[i] = "53243";
                else if (charArray[i] == 'G')        stringArray[i] = "32533";
                else if (charArray[i] == 'H')        stringArray[i] = "32153";
                else if (charArray[i] == 'J')        stringArray[i] = "31532";
                else if (charArray[i] == 'K')        stringArray[i] = "51123";
                else if (charArray[i] == 'L')        stringArray[i] = "12312";
                else if (charArray[i] == 'M')        stringArray[i] = "43552";
                else if (charArray[i] == 'O')        stringArray[i] = "32253";
                else if (charArray[i] == 'P')        stringArray[i] = "33311";
                else if (charArray[i] == 'Q')        stringArray[i] = "13251";
                else if (charArray[i] == 'T')        stringArray[i] = "13524";
                else if (charArray[i] == 'U')        stringArray[i] = "34212";
                else if (charArray[i] == 'V')        stringArray[i] = "22234";
                else if (charArray[i] == 'W')        stringArray[i] = "34141";
                else if (charArray[i] == 'X')        stringArray[i] = "31234";
                else if (charArray[i] == 'Y')        stringArray[i] = "32544";
                else if (charArray[i] == 'Z')        stringArray[i] = "41323";
                else if (charArray[i] == 'Ä')        stringArray[i] = "42331";
                else if (charArray[i] == 'Ö')        stringArray[i] = "54321";
                else if (charArray[i] == 'Ü')        stringArray[i] = "31221";
             
             
                //Numbers
                else if (charArray[i] == '0')        stringArray[i] = "32211";
                else if (charArray[i] == '1')        stringArray[i] = "12343";
                else if (charArray[i] == '2')        stringArray[i] = "21345";
                else if (charArray[i] == '3')        stringArray[i] = "41233";
                else if (charArray[i] == '4')        stringArray[i] = "32133";
                else if (charArray[i] == '5')        stringArray[i] = "51545";
                else if (charArray[i] == '6')        stringArray[i] = "32551";
                else if (charArray[i] == '7')        stringArray[i] = "52134";
                else if (charArray[i] == '8')        stringArray[i] = "34125";
                else if (charArray[i] == '9')        stringArray[i] = "32151";
             
             
                //Common Symbols
                else if (charArray[i] == ':')        stringArray[i] = "25213";
                else if (charArray[i] == ';')        stringArray[i] = "32522";
                else if (charArray[i] == '!')        stringArray[i] = "35133";
                else if (charArray[i] == '?')        stringArray[i] = "44511";
                else if (charArray[i] == '"')        stringArray[i] = "45121";
                else if (charArray[i] == '+')        stringArray[i] = "22521";
                else if (charArray[i] == '*')        stringArray[i] = "15111";
                else if (charArray[i] == '-')        stringArray[i] = "11251";
                else if (charArray[i] == '/')        stringArray[i] = "11431";
                else if (charArray[i] == '%')        stringArray[i] = "13411";
             
                //Less Common Symbols
                else if (charArray[i] == '^')        stringArray[i] = "12534";
                else if (charArray[i] == '°')        stringArray[i] = "12131";
                else if (charArray[i] == '²')        stringArray[i] = "31112";
                else if (charArray[i] == '³')        stringArray[i] = "44213";
                else if (charArray[i] == '§')        stringArray[i] = "31444";
                else if (charArray[i] == '$')        stringArray[i] = "21134";
                else if (charArray[i] == '&')        stringArray[i] = "31423";
                else if (charArray[i] == '{')        stringArray[i] = "12134";
                else if (charArray[i] == '}')        stringArray[i] = "31232";
                else if (charArray[i] == '[')        stringArray[i] = "13311";
                else if (charArray[i] == ']')        stringArray[i] = "34213";
                else if (charArray[i] == '(')        stringArray[i] = "32113";
                else if (charArray[i] == ')')        stringArray[i] = "31414";
                else if (charArray[i] == '=')        stringArray[i] = "55514";
                else if (charArray[i] == '\\')        stringArray[i] = "31533";
                else if (charArray[i] == '´')        stringArray[i] = "22121";
                else if (charArray[i] == '`')        stringArray[i] = "12213";
                else if (charArray[i] == '~')        stringArray[i] = "22231";
                else if (charArray[i] == '#')        stringArray[i] = "25234";
                else if (charArray[i] == '\'')        stringArray[i] = "11154";
                else if (charArray[i] == '_')        stringArray[i] = "13124";
                else if (charArray[i] == '<')        stringArray[i] = "15145";
                else if (charArray[i] == '>')        stringArray[i] = "34543";
                else if (charArray[i] == '|')        stringArray[i] = "22124";
                 
            }      
         
            for (int i = 0; i < stringArray.length; i++) {
                code += stringArray[i] + "";
            }
         
            return code;
        }
    }
     
    Okay, das Problem liegt am Decoder. Ich weiß auch wo, aber ich habe keine Ahnung, wie ich es fixen sollte. Code - Decodierer:
    Code (Java):
    package application.coder.main;

    public class Decoder {
        public static void main(String[] args) {
            String text = decode("3215325311322133221332123");
            System.out.println(text);
        }
     
        public static String decode(String code) {
            String text = "";
            String[] inputArray = new String[code.length()];
            String[] codeArray = new String[code.length()/5];
            char[] outputArray = new char[codeArray.length];
         
         
            /** Forms String code to an variable array called inputArray[] which saves every single number from String code as a String */
            for (int i = 0; i < inputArray.length; i++) {
                inputArray[i] = String.valueOf(code.charAt(i));
            }
         
         
            /** Puts every 5 columns of numbers tgt from inputArray and forms a String codeArray[] containing the coded chars */
            for (int i = 0; i < codeArray.length; i++) {
                codeArray[i] = String.valueOf(inputArray[i])
                                + String.valueOf(inputArray[i+1])
                                + String.valueOf(inputArray[i+2])
                                + String.valueOf(inputArray[i+3])
                                + String.valueOf(inputArray[i+4]);
            }
         
         
            /** Decodes all number combinations from codeArray[] and outputs them as a char */
            for (int i = 0; i < codeArray.length; i++) {
                //Very Common Letters
                if (codeArray[i].equals("32541"))            outputArray[i] = 'e';
                else if (codeArray[i].equals("43251"))        outputArray[i] = 'n';
                else if (codeArray[i].equals("44251"))        outputArray[i] = 'i';
                else if (codeArray[i].equals("25231"))        outputArray[i] = 's';
                else if (codeArray[i].equals("12531"))        outputArray[i] = 'r';
                else if (codeArray[i].equals("25311"))        outputArray[i] = 'a';
                else if (codeArray[i].equals("23531"))        outputArray[i] = 'd';
                else if (codeArray[i].equals("41523"))        outputArray[i] = ' ';
                else if (codeArray[i].equals("21353"))        outputArray[i] = '.';
                else if (codeArray[i].equals("15221"))        outputArray[i] = ',';
             
                //Very Common Letters Big
                else if (codeArray[i].equals("43153"))        outputArray[i] = 'E';
                else if (codeArray[i].equals("35213"))        outputArray[i] = 'N';
                else if (codeArray[i].equals("22133"))        outputArray[i] = 'I';
                else if (codeArray[i].equals("22531"))        outputArray[i] = 'S';
                else if (codeArray[i].equals("12532"))        outputArray[i] = 'R';
                else if (codeArray[i].equals("23511"))        outputArray[i] = 'A';
                else if (codeArray[i].equals("23351"))        outputArray[i] = 'D';
             
             
                //Less Common Letters
                else if (codeArray[i].equals("31153"))        outputArray[i] = 'b';
                else if (codeArray[i].equals("31323"))        outputArray[i] = 'c';
                else if (codeArray[i].equals("32143"))        outputArray[i] = 'f';
                else if (codeArray[i].equals("32133"))        outputArray[i] = 'g';
                else if (codeArray[i].equals("32313"))        outputArray[i] = 'h';
                else if (codeArray[i].equals("55312"))        outputArray[i] = 'j';
                else if (codeArray[i].equals("31232"))        outputArray[i] = 'k';
                else if (codeArray[i].equals("32213"))        outputArray[i] = 'l';
                else if (codeArray[i].equals("32321"))        outputArray[i] = 'm';
                else if (codeArray[i].equals("32123"))        outputArray[i] = 'o';
                else if (codeArray[i].equals("55311"))        outputArray[i] = 'p';
                else if (codeArray[i].equals("13221"))        outputArray[i] = 'q';
                else if (codeArray[i].equals("13324"))        outputArray[i] = 't';
                else if (codeArray[i].equals("34112"))        outputArray[i] = 'u';
                else if (codeArray[i].equals("22334"))        outputArray[i] = 'v';
                else if (codeArray[i].equals("31241"))        outputArray[i] = 'w';
                else if (codeArray[i].equals("31224"))        outputArray[i] = 'x';
                else if (codeArray[i].equals("32444"))        outputArray[i] = 'y';
                else if (codeArray[i].equals("41533"))        outputArray[i] = 'z';
                else if (codeArray[i].equals("42533"))        outputArray[i] = 'ä';
                else if (codeArray[i].equals("42533"))        outputArray[i] = 'ö';
                else if (codeArray[i].equals("31521"))        outputArray[i] = 'ü';
             
                //Less Common Letters Big
                else if (codeArray[i].equals("35153"))        outputArray[i] = 'B';
                else if (codeArray[i].equals("53123"))        outputArray[i] = 'C';
                else if (codeArray[i].equals("53243"))        outputArray[i] = 'F';
                else if (codeArray[i].equals("32533"))        outputArray[i] = 'G';
                else if (codeArray[i].equals("32153"))        outputArray[i] = 'H';
                else if (codeArray[i].equals("31532"))        outputArray[i] = 'J';
                else if (codeArray[i].equals("51123"))        outputArray[i] = 'K';
                else if (codeArray[i].equals("12312"))        outputArray[i] = 'L';
                else if (codeArray[i].equals("43552"))        outputArray[i] = 'M';
                else if (codeArray[i].equals("32253"))        outputArray[i] = 'O';
                else if (codeArray[i].equals("33311"))        outputArray[i] = 'P';
                else if (codeArray[i].equals("13251"))        outputArray[i] = 'Q';
                else if (codeArray[i].equals("13524"))        outputArray[i] = 'T';
                else if (codeArray[i].equals("34212"))        outputArray[i] = 'U';
                else if (codeArray[i].equals("22234"))        outputArray[i] = 'V';
                else if (codeArray[i].equals("34141"))        outputArray[i] = 'W';
                else if (codeArray[i].equals("31234"))        outputArray[i] = 'X';
                else if (codeArray[i].equals("32544"))        outputArray[i] = 'Y';
                else if (codeArray[i].equals("41323"))        outputArray[i] = 'Z';
                else if (codeArray[i].equals("42331"))        outputArray[i] = 'Ä';
                else if (codeArray[i].equals("54321"))        outputArray[i] = 'Ö';
                else if (codeArray[i].equals("31221"))        outputArray[i] = 'Ü';
             
             
                //Numbers
                else if (codeArray[i].equals("32211"))        outputArray[i] = '0';
                else if (codeArray[i].equals("12343"))        outputArray[i] = '1';
                else if (codeArray[i].equals("21345"))        outputArray[i] = '2';
                else if (codeArray[i].equals("41233"))        outputArray[i] = '3';
                else if (codeArray[i].equals("32133"))        outputArray[i] = '4';
                else if (codeArray[i].equals("51545"))        outputArray[i] = '5';
                else if (codeArray[i].equals("32551"))        outputArray[i] = '6';
                else if (codeArray[i].equals("52134"))        outputArray[i] = '7';
                else if (codeArray[i].equals("34125"))        outputArray[i] = '8';
                else if (codeArray[i].equals("32151"))        outputArray[i] = '9';
             
             
                //Common Symbols
                else if (codeArray[i].equals("25213"))        outputArray[i] = ':';
                else if (codeArray[i].equals("32522"))        outputArray[i] = ';';
                else if (codeArray[i].equals("35133"))        outputArray[i] = '!';
                else if (codeArray[i].equals("44511"))        outputArray[i] = '?';
                else if (codeArray[i].equals("45121"))        outputArray[i] = '"';
                else if (codeArray[i].equals("22521"))        outputArray[i] = '+';
                else if (codeArray[i].equals("15111"))        outputArray[i] = '*';
                else if (codeArray[i].equals("11251"))        outputArray[i] = '-';
                else if (codeArray[i].equals("11431"))        outputArray[i] = '/';
                else if (codeArray[i].equals("13411"))        outputArray[i] = '%';
             
                //Less Common Symbols
                else if (codeArray[i].equals("12534"))        outputArray[i] = '^';
                else if (codeArray[i].equals("12131"))        outputArray[i] = '°';
                else if (codeArray[i].equals("31112"))        outputArray[i] = '²';
                else if (codeArray[i].equals("44213"))        outputArray[i] = '³';
                else if (codeArray[i].equals("31444"))        outputArray[i] = '§';
                else if (codeArray[i].equals("21134"))        outputArray[i] = '$';
                else if (codeArray[i].equals("31423"))        outputArray[i] = '&';
                else if (codeArray[i].equals("12134"))        outputArray[i] = '{';
                else if (codeArray[i].equals("31232"))        outputArray[i] = '}';
                else if (codeArray[i].equals("13311"))        outputArray[i] = '[';
                else if (codeArray[i].equals("34213"))        outputArray[i] = ']';
                else if (codeArray[i].equals("32113"))        outputArray[i] = '(';
                else if (codeArray[i].equals("31414"))        outputArray[i] = ')';
                else if (codeArray[i].equals("55514"))        outputArray[i] = '=';
                else if (codeArray[i].equals("31533"))        outputArray[i] = '\\';
                else if (codeArray[i].equals("22121"))        outputArray[i] = '´';
                else if (codeArray[i].equals("12213"))        outputArray[i] = '`';
                else if (codeArray[i].equals("22231"))        outputArray[i] = '~';
                else if (codeArray[i].equals("25234"))        outputArray[i] = '#';
                else if (codeArray[i].equals("11154"))        outputArray[i] = '\'';
                else if (codeArray[i].equals("13124"))        outputArray[i] = '_';
                else if (codeArray[i].equals("15145"))        outputArray[i] = '<';
                else if (codeArray[i].equals("34543"))        outputArray[i] = '>';
                else if (codeArray[i].equals("22124"))        outputArray[i] = '|';
             
             
    //            //Error
    //            else {
    //                return null;
    //            }
            }
         
         
            /** Puts all chars from outputArray[] tgt and forms a String text */
            for (int i = 0; i < outputArray.length; i++) {
                text += outputArray[i];
            }
         
         
            return text;
        }
    }
     
    Nun ja, ich habe keinen Besseren Weg gefunden, den String code in 5er Abschnitte zu unterteilen. Mein Ergebnis ist ganz lustig. Irgendwie ist der output am Ende echt lustig, aber langen Texten, aber er ist für die Tonne.

    Ich bitte echt um Hilfe! Ich weiß nicht, wie ich Decodieren soll.
    Ich bedanke mich jetzt schon mal immens für hoffentlich kommende Antworten. Ich lese alle eure Replies! Danke! :)


    Bilder von der Swing GUI:
     

    Anhänge:

    Zuletzt von einem Moderator bearbeitet: 1. Dez. 2016
  2. Vielleicht hilft dir dieser Java-Kurs hier weiter --> (hier klicken)
  3. JCODA
    JCODA Aktives Mitglied
    Willst du bei
    Code (Java):

      /** Puts every 5 columns of numbers tgt from inputArray and forms a String codeArray[] containing the coded chars */
            for (int i = 0; i < codeArray.length; i++) {
     
    nicht vielleicht sowas wie immer 5 Plätze weiter gehen, bzw dein i, wenn du es benutzt mit 5 multiplizieren?
     
  4. UpdateDotExe
    UpdateDotExe Neues Mitglied
    Ja, aber ich weiß nicht, wie ich fünf Plätze weitergehe
     
  5. JCODA
    JCODA Aktives Mitglied
    Code (Java):
    /** Puts every 5 columns of numbers tgt from inputArray and forms a String codeArray[] containing the coded chars */
            for (int i = 0; i < codeArray.length; i++) {
                codeArray[i] = String.valueOf(inputArray[5*i])
                                + String.valueOf(inputArray[5*i+1])
                                + String.valueOf(inputArray[5*i+2])
                                + String.valueOf(inputArray[5*i+3])
                                + String.valueOf(inputArray[5*i+4]);
            }
    So vielleicht? Ich habe nicht weiter geschaut, ob es noch andere Baustellen gibt.
     
  6. UpdateDotExe
    UpdateDotExe Neues Mitglied
    Es funktioniert dadurch tatsächlich, aber wenn der Text länger als 150 Zeichen ca ist, bricht er ab und schreibt nur noch Leerzeichen.
     
  7. JCODA
    JCODA Aktives Mitglied
    Sehe ich jetzt nicht, warum das passieren soll.
    Als Tipp hätte ich noch folgendes Anzubieten:
    Schreibe dein "Mapping" in eine Datei und lade diese. Innerhalb des Programms verwendest du eine Map-Datenstruktur.
    Dann kannst du auch per Javacode die Rückrichtung sehr viel einfacher programmieren, als zweimal das Mapping hinzuschreiben. (Das ist sehr schlechter Stil: Redundanter Code...)
     
    UpdateDotExe gefällt das.
  8. UpdateDotExe
    UpdateDotExe Neues Mitglied
    Danke für den Tipp, aber ich habe noch nicht gelernt, was Mapping ist. Kannst du mir das kurz erklären, bzw wie man das effektiv in eine Datei schreibt und aus ihr liest. (Das Schreiben in eine Datei kann ich schon so ein bisschen)
     
  9. UpdateDotExe
    UpdateDotExe Neues Mitglied
    Oh, ich korrigiere mich hier mal kurz. Es funktioniert doch. Vllt habe ich ein nicht definiertes Sonderzeichen oder so verwendet, dass der Decoder abgebrochen hat, geht alles! Danke!

    Aber die kann ich es schaffen, dass er aus dieser Datei raus liest?
     
  10. JCODA
    JCODA Aktives Mitglied
  11. UpdateDotExe
    UpdateDotExe Neues Mitglied
    Danke dir so sehr! Ich guck mir das mal an! :D
     
Die Seite wird geladen...

Hilfe beim Quellcode für ein Codierungs-/Decodierungsprogramm - Ähnliche Themen

Hilfe gesucht beim einstieg in Java und erste Aufgaben aus der Berufsschule
Hilfe gesucht beim einstieg in Java und erste Aufgaben aus der Berufsschule im Forum Java Basics - Anfänger-Themen
Hilfe beim Einbinden von Bildern in einem JFrame
Hilfe beim Einbinden von Bildern in einem JFrame im Forum AWT, Swing, JavaFX & SWT
Brauche Hilfe beim Mappen von 3 Tabellen a 1:n mit hbm.xml.
Brauche Hilfe beim Mappen von 3 Tabellen a 1:n mit hbm.xml. im Forum Datenbankprogrammierung
Java Eclipse Hilfe beim Programmieren
Java Eclipse Hilfe beim Programmieren im Forum Datenbankprogrammierung
Anfänger sucht Hilfe. Fehler beim Compilieren
Anfänger sucht Hilfe. Fehler beim Compilieren im Forum Java Basics - Anfänger-Themen
Thema: Hilfe beim Quellcode für ein Codierungs-/Decodierungsprogramm