Frage von derwicht112, 3

Java Leerzeichen mit verschlüsseln?

import java.util.*;public class rot13 {public static String rot13(String input) {   StringBuilder sb = new StringBuilder();   for (int i = 0; i < input.length(); i++) {       char c = input.charAt(i);       if       (c >= 'a' && c <= 'm') c += 13;       else if  (c >= 'A' && c <= 'M') c += 13;       else if  (c >= 'n' && c <= 'z') c -= 13;       else if  (c >= 'N' && c <= 'Z') c -= 13;       else if(c == 32 ) c+=0;       sb.append(c);   }   return sb.toString();}public static void main(String[] args) {// TODO Auto-generated method stubString str1 = "";System.out.println("Verschlüsselung angeben!");Scanner sc = new Scanner(System.in);String str2 = sc.next();str1 = rot13(str2);System.out.println(str1);}}

Nun zu meiner Frage: wenn ich ein " Hallo" verschlüsseln will geht das , aber wenn ich "Hallo wie gehts" hinschreibe, verschlüsselt er mir nur das "Hallo". Könnt ihr mir da helfen?

Gruß derwicht112

Antwort
von Suboptimierer, 3

Was passiert, wenn du das else if( c == 32... weglässt?

c+=0 ergibt keinen Sinn

Gibt es eine Alternative zu append? Geht sb += c;?

Wird "Hallo wie gehts" korrekt übergeben? Mach mal eine Testausgabe.

Antwort
von Jonas711, 2

Ersetz mal 

   String str2 = sc.next();

durch 

String str2 = sc.nextLine();


Alternativ kannst du die Zeile auch lassen und dafür:

  Scanner sc = new Scanner(System.in);

durch

Scanner sc = new Scanner(System.in).useDelimiter("\n");

ersetzen.

Erklärung: Das Problem ist, dass " " ein Standardtrennzeichen ist. Entweder du änderst das (wie im 2. Fall- "\n" steht für neue Zeile) oder du liest die ganze Zeile zusammen ein.

Kommentar von derwicht112 ,

Was ein kleiner Fehler alles machen kann :) danke dir hat super geklappt :)

Keine passende Antwort gefunden?

Fragen Sie die Community