2015-12-05 3 views
-2

Вопрос был дан нам на нашем экзамене на прошлой неделе. Нам было предложено создать класс, который можно было бы использовать для ввода строки и числа, где символы строки перемещают столько же пробелов, сколько введенное число.Начальная Java: основная программа шифрования (Ceasar Cipher)

Существует две вещи, о которых следует помнить. Во-первых, дело не имеет значения. Выход может быть в одном и том же случае или может быть стандартизирован. Два, если A и 2 вводятся, Y - это то, что мы получаем. Алфавиты ходят.

Пример ввода:

I Love Java

Пример вывода:

G JMTC HYTY

Это то, что я придумал во время экзамена (это было написано, поэтому у меня не было возможности проверить, сработало ли это). Когда я собирал и запустил его, вот что я получаю -

Пример ввода:

I Love Java

Пример вывода:

G8JMTC8HYTY

Я пробовал еще несколько слов, и поэтому в основном вот что происходит. Пространства заменяется числом, которое 10- (

import java.util.*; 
public class ENCRYPT 
{ 
    static void main() 
    { 
     Scanner in=new Scanner(System.in); 
     System.out.println("Enter the string");   
     String a=in.nextLine();   
     a=a.toLowerCase(); 
     System.out.println("Enter the encrption value"); 
     int m=in.nextInt(); 
     String x=""; char ch; 
     for(int i=0; i<a.length(); i++) 
     { 
      ch=a.charAt(i); 
      if((int)ch-97<m) 
      { 
       x=x+(char)((123-m)+(int)ch-97); 
      } 
      else if(ch==' ') 
      { 
       x=x+' '; 
      } 
      else 
      { 
       x=x+(char)((int)ch-m); 
      } 
     } 
     System.out.println(x.toUpperCase()); 
    } 
} 
+0

Я думаю, что вы хотите реализовать Цезарь Cipher ... – Naruto

+0

Если бы этот вопрос был достаточно анс Пожалуйста, отметьте сообщение, которое решило вашу проблему как «принятое», щелкнув галочку в ответе. В заголовке вашего вопроса нет необходимости ставить «принято». –

ответ

1

Ошибка в том, что (интермедиат) ч-97 < м является верно для пространства also.So он идет внутрь, если заявление.

вы можете решить, поставив галочку пространство первого, а затем ваш код ...

if(ch==' ') 
    { 
     x=x+' '; 
    } else if((int)ch-97<m) 
    { 
     x=x+(char)((123-m)+(int)ch-97); 
    } 
    else 
    { 
     x=x+(char)((int)ch-m); 
    } 
+0

Отметить решение как ПРИНИМАЕМОЕ, если ваша проблема oslved.In таким образом, это поможет другим, кто ищет аналогичную проблему. – Naruto

+0

Большое спасибо – zwoshed

+0

@zwoshed Пожалуйста, закройте поток, отметив ответ как ПРИНЯТЫЙ, если решение помогло вам – Naruto

Смежные вопросы