2016-04-13 14 views
0

Java'da sezar şifreleme programı yapıyorum. Anahtar ifadesini kullandım ve sadece bir problemim var, tam ismimi yazdığım zaman ilk ve son arasında boşluk olmayacak. Eğer bir alan için bir her harf için case ama sahip olduğundanAnahtar deyim çıktısına nasıl bir alan eklerim?

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

:

Basitçe ele karakterlerin sizin aynı yöntemi devam ediyor. – f1sh

cevap

2

, sadece şifreleme işlemi sırasında atılacaktır. default, switch ifadesinin sonuna ekleyerek, yalnızca harfi şifrelenmeden çıktılar. Bu daha sonra alanı da yakalayacaktır. o zaman ele alınmamış tüm diğer semboller bir boşluk ile temsil edilebilir çünkü

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

Bu aslında bunu yapmanın gerçekten zarif bir yoludur. – dambros

+1

Oy verdim ancak varsayılan bir durum yapmazdım, sadece bir boşluk durumu yapardım, çünkü noktalama işaretleri ve diğer semboller için davranışın ne olması gerektiğini bilmemeniz gerekir. Davranışı yan etkilerle değiştiren potansiyel. – StackFlowed

0

Sen, bir boşluk işlemek için varsayılan bir durumda kullanmak istemiyoruz. O kopyalama/yapıştırma gerçekten acı bahis

case ' ': 
    System.out.print(" "); 
    break; 
İlgili konular