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

Dieses Thema Swing - Hilfe beim Quellcode für ein Codierungs-/Decodierungsprogramm im Forum "Allgemeine Java-Themen" wurde erstellt von UpdateDotExe, 1. Dez. 2016.

Thema: Hilfe beim Quellcode für ein Codierungs-/Decodierungsprogramm Hallo, ich habe mir seit einiger Zeit Java Grundlagen angesammelt und habe auch ein recht gutes Verständnis für...

  1. 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 helfen dir diese Java-Grundlagen weiter --> *Klick*
  3. 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. Ja, aber ich weiß nicht, wie ich fünf Plätze weitergehe
     
  5. 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. 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. 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. 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. 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. Danke dir so sehr! Ich guck mir das mal an! :D
     
  11. KOSTENLOSES Java-Grundlagen Training im Wert von 39 € Sichere dir hier den kostenlosen Zugriff auf umfangreiches Java-Know How und starte richtig durch!