public static String encrypt (String h, int a) throws Exception
{
h = h.toLowerCase();
if(h.contains("a"))
{
data = data.replace("a", "c");
}
if(h.contains("b"))
{
data = data.replace("b", "d");
}
if(h.contains("c"))
{
data = data.replace("c", "e");
}
if(h.contains("d"))
{
data = data.replace("d", "f");
}
if(h.contains("e"))
{
data = data.replace("e", "g");
}
if(h.contains("f"))
{
data = data.replace("f", "h");
}
if(h.contains("g"))
{
data = data.replace("g", "i");
}
if(h.contains("h"))
{
data = data.replace("h", "j");
}
if(h.contains("i"))
{
data = data.replace("i", "k");
}
if(h.contains("j"))
{
data = data.replace("j", "l");
}
if(h.contains("k"))
{
data = data.replace("k", "m");
}
if(h.contains("l"))
{
data = data.replace("l", "n");
}
if(h.contains("m"))
{
data = data.replace("m", "o");
}
if(h.contains("n"))
{
data = data.replace("n", "p");
}
if(h.contains("o"))
{
data = data.replace("o", "q");
}
if(h.contains("p"))
{
data = data.replace("p", "r");
}
if(h.contains("q"))
{
data = data.replace("q", "s");
}
if(h.contains("r"))
{
data = data.replace("r", "t");
}
if(h.contains("s"))
{
data = data.replace("s", "u");
}
if(h.contains("t"))
{
data = data.replace("t", "v");
}
if(h.contains("u"))
{
data = data.replace("u", "w");
}
if(h.contains("v"))
{
data = data.replace("v", "x");
}
if(h.contains("w"))
{
data = data.replace("w", "y");
}
if(h.contains("x"))
{
data = data.replace("x", "z");
}
if(h.contains("y"))
{
data = data.replace("y", "a");
}
if(h.contains("z"))
{
data = data.replace("z", "b");
}
return h;
}
Когда я запускаю это, он не заменяет правильные буквы. Я не знаю, как это исправить, и просто искал какую-то помощь.
То, как вы шифруете свою строку, делает lettres заменены более одного раза. Если вы действительно хотите использовать оператор "if", вы можете сделать это следующим образом:
static String encrypt (String data)
{
String returned = new String ("");
for (char h: data.toCharArray())
{
if(h == 'a')
returned += " a', 'c";
if(h == 'b')
returned += "d";
if(h == 'c')
returned += "e";
if(h == 'd')
returned += "f";
if(h == 'e')
returned += "g";
if(h == 'f')
returned += "h";
if(h == 'g')
returned += "i";
if(h == 'h')
returned += "j";
if(h == 'i')
returned += "k";
if(h == 'j')
returned += "l";
if(h == 'k')
returned += "m";
if(h == 'l')
returned += "n";
if(h == 'm')
returned += "o";
if(h == 'n')
returned += "p";
if(h == 'o')
returned += "q";
if(h == 'p')
returned += "r";
if(h == 'q')
returned += "s";
if(h == 'r')
returned += "t";
if(h == 's')
returned += "u";
if(h == 't')
returned += "v";
if(h == 'u')
returned += "w";
if(h == 'v')
returned += "x";
if(h == 'w')
returned += "y";
if(h == 'x')
returned += "z";
if(h == 'y')
returned += "a";
if(h == 'z')
returned += "b";
}
return returned;
}
Но лучше использовать хеш-таблицу для такого алгоритма.
if
, вы должны использовать else if
. Таким образом, вы не проверяете весь алфавит, даже если исходная буква «а»
Здесь более простой способ сделать это конкретное шифрование:
static String encrypt (String data)
{
String encrypted = new String ("");
for (char c : data.toCharArray())
{
char newC = c+2;
if(newC > 'z')
newC -= 26;
encrypted += newC;
}
return encrpyted;
}
a
наc
позже, вы заменяетеc
наe
поэтому исходные данные не будут закодированы должным образом