我正在制作一个控制台应用程序,加密样式ceasar中的消息增加了5个字母,但我只能加密消息1个字母的2个或更多不能得到错误 我想像我一样加密超过2个字母的句子吗?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Cesar
{
enum letras { a, b, c, d, e, f, g, h, i, j, k, l, m, n, ñ, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, Ñ, O, P, Q, R, S, T, U, V, W, X, Y, Z, };
class Cesar
{
public static void Main()
{
int op = 0, res;
while (true)
{
Console.WriteLine("Cifrar un mensaje [1]\n" + "Descifrar un mensaje [2]\n" + "Sair [3]\n");
res = Convert.ToInt32(Console.ReadLine());
op = res;
Cesar cift = new Cesar();
if (res == 1)
{
Cesar.cifrar();
}
if (res == 2)
{
Cesar.descifrar();
}
if (res == 3)
{
Console.In.Close();
break;
}
else
{
Console.WriteLine("Escribe un numero del 1 al 3");
Console.ReadLine();
}
}
}
public static void cifrar()
{
Console.WriteLine("Escribe el mensaje");
string letra = Console.ReadLine();
letras l = (letras)Enum.Parse(typeof(letras), letra);
Console.WriteLine("Cifrado: " + (l + 5));
Console.ReadLine();
}
public static void descifrar()
{
Console.WriteLine("Escribe el cifrado");
string letra = Console.ReadLine(); ;
letras l = (letras)Enum.Parse(typeof(letras), letra);
Console.WriteLine("Descifrado: " + (l - 5));
Console.ReadLine();
}
}
答案 0 :(得分:0)
您可能超出了定义的枚举范围。您需要创建一个循环添加。
public static void cifrar()
{
Console.WriteLine("Escribe el mensaje");
string letra = Console.ReadLine();
letras l = (letras)Enum.Parse(typeof(letras), letra);
Console.WriteLine("Cifrado: " + ((l + 5) % 53)); //Use the modulus operator to prevent going beyond the end of the enum
Console.ReadLine();
}
public static void descifrar()
{
Console.WriteLine("Escribe el cifrado");
string letra = Console.ReadLine(); ;
letras l = (letras)Enum.Parse(typeof(letras), letra);
int di = ((int)l) - 5; //Move back 5 letters
if(di < 0) di = 53 + di; //We moved to a negative number, circle back to the end
Console.WriteLine("Descifrado: " + ((letras)di));
Console.ReadLine();
}
答案 1 :(得分:0)
public static void cifrar()
{
Console.WriteLine("Escribe el mensaje");
string letra = Console.ReadLine();
letras l = (letras)Enum.Parse(typeof(letras), letra);
int di = ((int)l) + 5;
if (di > 53) di = ((int)l) - 49;
Console.WriteLine("Cifrado: " + ((letras)di));
Console.ReadLine();
}
public static void descifrar()
{
Console.WriteLine("Escribe el cifrado");
string letra = Console.ReadLine(); ;
letras l = (letras)Enum.Parse(typeof(letras), letra);
int di = ((int)l) - 5;
if (di < 0) di = ((int)l) + 49;
Console.WriteLine("Descifrado: " + ((letras)di));
Console.ReadLine();
}