シーザー暗号プログラムを作成しようとしていますが、最後の暗号化された出力からスペースを削除できません。私は使用しました:シーザー暗号の文字列からスペースを削除する問題#
しかし、これは動作していないようだと私は問題の原因を特定することはできません。私は非常に長いので、おそらく愚かなエラーになる可能性がありますC#で作業していない。
シフト7でフレーズを入力した場合、「私は助けが必要です」という出力はpAullkAolswとなり、すべてのスペースが大文字Aになります。p ullk olsw 。
以下は私の完全なコードです:
using System;
class Program
{
static string Caesar(string value, int shift)
{
char[] buffer = value.ToCharArray();
for (int i = 0; i < buffer.Length; i++)
{
char letter = buffer[i];
letter = (char)(letter + shift);
if (letter == ' ')
continue;
if (letter > 'z')
{
letter = (char)(letter - 26);
}
else if (letter < 'a')
{
letter = (char)(letter + 26);
}
buffer[i] = letter;
}
return new string(buffer);
}
static void Main()
{
Console.WriteLine("Enter text to encrypt: ");
string buffer = Console.ReadLine();
Console.WriteLine("Enter value of shift: ");
int shift = int.Parse(Console.ReadLine());
string final = Caesar(buffer, shift);
Console.WriteLine(final);
}
}
シフトされた文字が ''であるかどうかを確認します。あなたはシフトの前にチェックする必要があります。編集:スペースを完全に削除する場合は、バッファ[i]を変更する代わりに、新しいchar []に書き込む必要があります。 (解読するときにスペースがないことに注意してください) – TheSkimek
愚かな間違い:+シフトを行う前にスペースをテストしてください。 – Rob
ええ、今は明らかですが、少なくとも私はそれを覚えています。 –