Verschlüsselung

djvanny

Neues Mitglied
Ich darf zu Dienstag eine Hausaufgabe abliefern. Programm habe ich soweit geschrieben, leider liefert es massig Fehler (z. Zt 20). Ich bin leider blutiger Anfänger, mit Arrays habe ich noch nie gearbeitet, leider sieht es so aus als käme ich hier nicht drum herum. Das Programm soll eine Nachricht mit der Skytale-Methode ver- bzw. entschlüsseln.

Der String nMessage wird als Buffered Reader in der main-Methode eingelesen, anschließend soll er in der Methode encrypt verschlüsselt werden:

Java:
public  String encrypt (String new_e_message)
   {
    
     
     char buchstabe[] = nMessage.toCharArray(28);
     String spalte1 = buchstabe[0]+buchstabe[7]+buchstabe[14]+buchstabe[21];
     String spalte2 = buchstabe[1] + buchstabe[8] + buchstabe[15] + buchstabe[22];
     String spalte3 = buchstabe[2] + buchstabe[9] + buchstabe[16] + buchstabe[23];
     String spalte4 = buchstabe[3] + buchstabe[10] + buchstabe[17] + buchstabe[24] ;
     String spalte5 = buchstabe[4] + buchstabe[11] + buchstabe[18] + buchstabe[25] ;
     String spalte6 = buchstabe[5] + buchstabe[12] + buchstabe[19] + buchstabe[26] ;
     String spalte7 = buchstabe[6] + buchstabe[13] + buchstabe[20] + buchstabe[27] ;

     String new_e_message = String (spalte1 + spalte2 + spalte3 +
 spalte4  + spalte5 + spalte6 + spalte7);
    
     return new_e_message;

      
        
      
           
   }

1. Fehler: char buchstabe[] = nMessage.toCharArray(28); funktioniert nicht. Fehlermeldung:
toCharArray() in java.lang.String cannot be applied to (int)

2. Weitere Fehler:
String spalte1 = buchstabe[0]+buchstabe[7]+buchstabe[14]+buchstabe[21];
String spalte2 = buchstabe[1] + buchstabe[8] + buchstabe[15] + buchstabe[22];

Konkatenation funktioniert nicht, Pluszeichen makiert: Fehlermeldung:

incomaptible types found: int requiered java.lang.string


In die Klasse habe ich zudem den String nMessage definiert, dieser wird dann über die main-Methode eingelsen und soll an die einzelnen Mdthoden encrypt und decryt übergeben werden. Geht das überhaupt?:

Java:
public class Skytale
{
String nMessage;

Danke schonmal für eure Antworten
 
Zuletzt bearbeitet von einem Moderator:
1) der String-parameter
ist so überflüssig da auch ein fehler auftauchen sollte das "new_e_message" bereits deklariert ist ... nämlich in der methoden-signatur

2) referenzen
verstehe zwar nicht warum du überhaupt einen String übergeben willst wenn du dann doch mit der klassen-variable arbeitest

3) chars
chars sind für java numerische datentypen ... wesshalb du mit ihnen rechnen kannst *wo dann als ergebnis ein INT rauskommt*
verwende hier StringBuffer/StringBuilder ... so wird das nämlich nichts

4) dein seltsamer String-cast-konstruktor-what-ever ...
auch hier wird dir der compiler einen fehler werfen ... weil das weder ein cast noch ein konstruktor ist sondern einfach sinnloses in den raum werfen von klassen namen

5) grundlagen ?
entweder hast du im unterricht gepennt oder du willst es nicht ...
denn ich glaube kaum das ihr eine solche aufgabe bekommt OHNE das euch die grundlagen beigebracht wurden ...
wenn du etwas nicht verstehst und dann nichts sagst das du es nicht verstanden hast liegt der fehler und die schuld dafür bei dir ...

6) JAVA-tags ... nicht CODE-tags ... *wie groß und rot denn noch ?*
 
chars kann man nicht einfach zu Strings addieren. Eine mögliche Lösung ist [c]"" + buchstabe[0] + buchstabe[1] +...[/c] (man beachte den Leerstring als "Startpunkt"), oder auch [c]new StringBuilder().append(buchstabe[0]).append(buchstabe[1]).toString();[/c]. Außerdem braucht man auch kein char-Array erzeugen, sondern kann mit charAt direkt auf die einzelnen chars des Strings zurückgreifen. Das alles noch in einer Schleife gepackt:

Java:
StringBuilder sb = new StringBuilder();
for(int i = 0; i < 7; i++) {
  for(int j = 0; j < 4; j++) {
     sb.append(nMessage.charAt(i + 7*j);
  }
}
return sb.toString();
 
Moin,

chars kann man nicht einfach zu Strings addieren. Eine mögliche Lösung ist [c]"" + buchstabe[0] + buchstabe[1] +...[/c] (man beachte den Leerstring als "Startpunkt")
Genau 😉
Vielleicht hierzu noch ein Satz der Erklärung, da ich hiermit auch schon mal Problem hatte :

OHNE den Leerstring werden die nachfolgenden "buchstabe[x]" NICHT als Zeichen/char angesehen, sondern (wie von irgendjemand beschrieben) als Integer und dann einfach nur lustig aufsummiert!

Erst der der Leerstring zu Beginn sorgt dafür, dass sie als Zeichen angesehen und dann konkateniert werden !

Gruß
Klaus
 

Zurück
Oben