2012-04-06 6 views
-3

Я использую следующий код, чтобы применить кесарь алгоритм шифрования, Но не работаю хорошоErorr в Моем коде

кода

foreach (char t in richTextBox1.Text) 
     { 
      char encrypted = (char)(t + 3); 
      richTextBox2.Text = encrypted.ToString(); 
     } 

Когда обычный текст возврат «MOSTAFA» 'd' только это принимает последний символ , что я могу сделать.

Благодаря

+0

@JustinPihony: Кажется, пользователи более отчаянные, чем вы думаете; p – leppie

+2

@leppie - плод был слишком низким, висит :) – KevinDTimm

+0

Значение char 'a' + 3 будет равно' d' ваш код делает именно то, что он должен делать. Конечно, вы действительно хотите использовать '+ =' вместо '=', считая, что хотите отобразить всю строку вместо последнего символа в новой строке. –

ответ

1

Попробуйте с этим:

StringBuilder enrypted = new StringBuilder(); 
foreach (char t in richTextBox1.Text) 
{ 
    encrypted.Append((char)(t + 3));     
} 
richTextBox2.Text = encrypted.ToString(); 
1
foreach (char t in richTextBox1.Text) 
{ 
    char encrypted = (char)(t + 3); 
    richTextBox2.Text = encrypted.ToString(); 
} 

Поскольку вы назначая richTextBox2.Text к одному символу. Последним оказывается тот, который отображается. Ваши результаты не являются кумулятивными.

Вы можете сделать что-то вроде этого, вместо:

var sb = new StringBuilder(); 
foreach (char t in richTextBox1.Text) 
{ 
    char encrypted = (char)(t + 3); 
    sb.Append(encrypted); 
} 
richTextBox2.Text = sb.ToString(); 
1

Изменить

richTextBox2.Text = encrypted.ToString(); 

в

richTextBox2.Text += encrypted.ToString(); 
0

Потому что я на самом деле, как LINQ

char[] text = richTextBox1.Text.ToCharArray(); 
richTextBox2.Text = new String(text.Select(ch => (char)(ch + 3)).ToArray());