2016-04-13 10 views
0

私はjavaでシーザー暗号プログラムを作っています。私はスイッチのステートメントを使用し、私は1つの問題は私が私の最初と最後の間にスペースがない私のフルネームを書くときです。switch文の出力にスペースを追加するにはどうすればよいですか?

import java.util.*; 

public class caesarCipher { 

    public static void main(String[] args) { 
     Scanner in = new Scanner(System.in); 
     System.out.println("Write your name:"); 
     String name = in.nextLine(); 
     System.out.println("The Encryption for your name:"); 

     for (int i = 0; i < name.length(); i++) { 

      switch (name.charAt(i)) { 
       case 'A': 
       case 'a': 
        System.out.print("E"); 
        break; 
       case 'B': 
       case 'b': 
        System.out.print("Y"); 
        break; 
       case 'C': 
       case 'c': 
        System.out.print("F"); 
        break; 
       case 'D': 
       case 'd': 
        System.out.print("Q"); 
        break; 
       case 'E': 
       case 'e': 
        System.out.print("W"); 
        break; 
       case 'F': 
       case 'f': 
        System.out.print("D"); 
        break; 
       case 'G': 
       case 'g': 
        System.out.print("T"); 
        break; 
       case 'H': 
       case 'h': 
        System.out.print("C"); 
        break; 
       case 'I': 
       case 'i': 
        System.out.print("R"); 
        break; 
       case 'J': 
       case 'j': 
        System.out.print("N"); 
        break; 
       case 'K': 
       case 'k': 
        System.out.print("B"); 
        break; 
       case 'L': 
       case 'l': 
        System.out.print("G"); 
        break; 
       case 'M': 
       case 'm': 
        System.out.print("A"); 
        break; 
       case 'N': 
       case 'n': 
        System.out.print("J"); 
        break; 
       case 'O': 
       case 'o': 
        System.out.print("X"); 
        break; 
       case 'P': 
       case 'p': 
        System.out.print("O"); 
        break; 
       case 'Q': 
       case 'q': 
        System.out.print("I"); 
        break; 
       case 'R': 
       case 'r': 
        System.out.print("L"); 
        break; 
       case 'S': 
       case 's': 
        System.out.print("Z"); 
        break; 
       case 'T': 
       case 't': 
        System.out.print("M"); 
        break; 
       case 'U': 
       case 'u': 
        System.out.print("P"); 
        break; 
       case 'V': 
       case 'v': 
        System.out.print("S"); 
        break; 
       case 'W': 
       case 'w': 
        System.out.print("H"); 
        break; 
       case 'X': 
       case 'x': 
        System.out.print("K"); 
        break; 
       case 'Y': 
       case 'y': 
        System.out.print("V"); 
        break; 
       case 'Z': 
       case 'z': 
        System.out.print("U"); 
        break; 
      } 
     } 
    } 
+0

単に文字を処理するあなたのと同じ方法を続けます。 – f1sh

答えて

2

すべての文字はスペースではなくcaseですので、暗号化プロセス中にドロップされます。文字を暗号化せずにそのまま出力するswitchステートメントの最後にdefaultを追加することができます。これはまた、スペースをつかむだろう。

// ... 
case 'Z': 
case 'z': 
    System.out.print("U"); 
    break; 
default: 
    System.out.print(name.charAt(i)); 
    break; 
+0

これは実際にそれを行うには本当にエレガントな方法です。 – dambros

+1

私は投票しましたが、私はちょうどあなたが句読点や他の記号のための動作でなければならないことを知らないので、大文字小文字の区別をするでしょう。潜在的な副作用の行動を変更します。 – StackFlowed

0

デフォルトの大文字小文字を使用してスペースを処理したくない場合は、処理していない他のすべてのシンボルがスペースで表されるためです。私はコピー/貼り付けが本当に苦痛だったことを賭ける

case ' ': 
    System.out.print(" "); 
    break; 
関連する問題