Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich muss für mein Informatik Projekt ein Xor Programm schreiben und ich hab kein plan wie das geht . Wäre echt super wenn wer von euch mal nen ganz einfaches fertiges java Xor Programm posten würde. Also man sollte in ein Kasten nen code ein geben und der sollte dann einfach xor verschlüsselt werden mehr nicht ^^.
Sollte so einfach programmiert sein wie möglch.
wäre super wen ihr so schnell wie möglcih antwortet da ich das projkekt am 4.6.09 abgeben musss.
[IRONIE]
Das hat sicher mit Performance zu tun. Alles in einer Methode zu schreiben, macht man, da Methodenaufrufe teuer sind.
Das Zerlegen des Strings durch
Code:
switch(length)
und
Code:
case 0...11: charAt(0..1)
ist aus 2 Gründen performanter als
Code:
.toCharArray()
:
1. Erzeugt
Code:
.toCharArray()
eine Kopie des internen Arrays, das führt zu höherem Speicherverbrauch und kostet Zeit.
Code:
charAt()
greift direkt auf das Array zu.
2. Wenn man kein Array hat braucht man auch keine Schleife darüber. Das ist so zu sagen ein manuelles Loop unrolling
Und mal ehrlich wer hat schon Strings die länger als 11 Zeichen sind.
Die imports auf
Code:
java.awt.*
und
Code:
javax.swing.*
, optimiert der Compiler eh weg, und wenn man will kann man auch gleich eine GUI für schreiben ohne später die imports mühselig hinzufügen zu müssen.
Aber einen Kritikpunkt hätte ich dann doch:
Java:
answerges = new Character(answer_str.charAt(0)).charValue();
Dabei wird ein neues Character-Objekt erzeugt. Besser ist:
Ich weiß das dieses Thema uralt ist...
Und ich bin auch kein profi!!!
Deshalb verarscht mich nicht so weil ich erst seit einem halben jahr programmiere!!!
Will dich ja keiner verarschen.
Aber ist dein Posting die Lösung auf die gestellte Frage, oder ist das eher ein Diskussionsbeitrag?
Wenn ja, was willst du dann damit sagen?
Verarschen wollte ich dich persönlich nicht, aber was hast du dir denn erwartet? Ich mein Landei hat schon vor knapp 3 Jahren einen Code gepostet, der in 7 Zeilen funktional (fast) das selbe macht wie du in 149 Zeilen. Sollte doch klar sein, welche Lösung besser ist.
Wolltest du wissen ob deine Code gut ist? Ich glaube das hätten wir geklärt.
Einfach mal im Anfängerbereich kommentarlos eine "Musterlösung" zu posten, halte ich nicht für gut.
Falls du es dich interessiert, was man alles besser machen könnte:
1. Alles in einer Methode schreiben ist nicht gut
2. Bei Xor-Verschlüsselung läuft die Ver- und Entschlüsselung gleich ab. Du hast 2 mal den selben Code geschrieben, so etwas lagert man normalerweise in eine Methode aus und ruft diese dann entsprechend auf.
3. Anstelle mit 11 chars zu arbeiten, sollte man mit Arrays arbeiten, dann kann man zum einem die Methode
Code:
String#toCharArray()
zum zerlegen in einzelne Buchstaben verwenden und muss es nicht selbst machen. Zum anderen ist man dann nicht in der Anzahl der Buchstaben beschränkt.
4.
Java:
answerges = new Character(answer_str.charAt(0)).charValue();
kann man sich sparen.
Code:
answer_str.charAt(0)
liefert schon ein char zurück.
5. Dein Code hat eine zyklomatische Komplexität von 56. Das sagtm grob erklärt aus, wieviele Verzweigungen es in deiner Methode gibt. Damit diese nicht zu hoch wird, sollte man den Code auf einzelne Methoden auslagern. Der Ablauf wäre bei dir in etwa so:
Code:
do{
Gibt aus was gemacht werden soll
int menu = leseMenuEingabe();
if(menu == 1){
verschluesseln();
}
else if(menu == 2){
entschlüsseln();
}
else{
Gib "ungültige wahl" aus.
}while(nicht weitermachen);
Dieser Code hätte beispielsweise eine zyklomatische Komplexität von 4.
Ja ich weiß...
Nur habe ich sollche Befehle wie CharArray noch nicht gekannt, und ich hab ein wenig ADS und war stolz auf mein erstes "komplexeres" programm, also wollte ich es der Welt zeigen... was im nachhinein doch nicht so eine kluge Idee war.
Obwohl jetzt habe ich ein Feedback von einem wohl um einiges erfahreneren Programmierers. Danke ;-)
Mach dir nichts draus, in einem Jahr wirst du selber genauso drüber denken. Geht zumindest mir so, wenn ich mir meine ersten Projekte nochmal anschau und dann einfach nur drüber lache wie schwer ich's mir gemacht habe und was für einfache API-Funktion es doch gegeben hätte oder was für ein grausiges Design das Projekt hatte. Also Kopf hoch und weiter progammieren.
Neben bei bemerkt, ist es immer eine schlechte Idee in zwei Jahre alten Threads zu posten, außer man hat das selbe Problem und es wurde keine Lösung gepostet, aber selbst dann kann es besser sein einen neuen Thread aufzumachen. Wenn du unserer Meinung über deinen Code hören willst ohne konkrete Frage, passt das auserdem besser zu Projekte und Codeschnippsel.