Auf Thema antworten

So als Anregung...


Man bekommt die Zuordnung Buchstabe, Leerzeichen, Ziffer usw in der [code]Character[/code]-Klasse geschenkt. Ich habe immer ein schlechtes Gefuehl, in Java mit den numerischen Werten eines ASCII-Zeichens herumzurechnen, daher der Ansatz mit dem Alphabet-Array. Der Code rotiert nur nur Buchstaben und beruecksichtigt Gross- und Kleinschreibung, Ziffern und Leerzeichen werden unveraendert uebernommen, unbekannte sonstige Zeichen werden ignoriert.


Du kannst den Code in der Eclipse Console laufen lassen; um das Programm zu beenden muss es das EOD-Signal bekommen. Unter UNIX ist das Steuerung+D, wie das in Windows ist, weiss ich leider nicht.

[code=Java]

package rot13;


import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;


public class Main {


    static final String alphabet = "abcdefghijklmnopqrstuvwxyz";

    static final int LENGTH = alphabet.length();

   

    public static void main(String[] args) throws IOException {

       

        final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

       

        for(;;) {                 

            final String input = br.readLine();

            if(input == null) {

                break;

            }

       

            final StringBuilder b = new StringBuilder(input.length());


            for(final Character ch : input.toCharArray()) {

               

                if(Character.isLetter(ch)) {

                           

                    final int index = alphabet.indexOf(Character.toLowerCase(ch.charValue()));

                    if(index == -1) {

                        continue;

                    }

                   

                    int i = index + 13;

                    if( i >= LENGTH) {

                        i -= LENGTH;

                    }

                   

                    final char c2 = alphabet.charAt(i);

                    b.append(Character.isUpperCase(ch) ? Character.toUpperCase(c2) : c2);

                } else if(Character.isWhitespace(ch) || Character.isDigit(ch)) {

                    b.append(ch);

                }

            }

           

            System.out.println(b.toString());

        }

    }

}

[/code]



Oben