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! ) Code siehe hier - Codierer:
Okay, das Problem liegt am Decoder. Ich weiß auch wo, aber ich habe keine Ahnung, wie ich es fixen sollte. Code - Decodierer:
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:
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! ) Code siehe hier - Codierer:
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:
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 bearbeitet von einem Moderator: