Java 如何创建编码器?解码器?
一般来说,我对编程相当陌生,我想知道如何对输入的文本进行编码/解码 对于ex A->D,所有字母必须减少3个字母 B->E 诸如此类 我将输入一些伪代码作为示例: 输入消息:“LORYHBRX” 编码信息:LORYHBRX 解码信息:我爱你 输出消息:“我爱你” 请帮忙 到目前为止我有Java 如何创建编码器?解码器?,java,eclipse,algorithm,encoding,decoding,Java,Eclipse,Algorithm,Encoding,Decoding,一般来说,我对编程相当陌生,我想知道如何对输入的文本进行编码/解码 对于ex A->D,所有字母必须减少3个字母 B->E 诸如此类 我将输入一些伪代码作为示例: 输入消息:“LORYHBRX” 编码信息:LORYHBRX 解码信息:我爱你 输出消息:“我爱你” 请帮忙 到目前为止我有 import java.util.*; public class Encoder { public static void main(String[] args) { String a =
import java.util.*;
public class Encoder {
public static void main(String[] args)
{
String a = "d";
String b = "e";
String c = "f";
String d = "g";
String e = "h";
String f = "i";
String g = "j";
String h = "k";
String i = "l";
String j = "m";
String k = "n";
String l = "o";
String m = "p";
String n = "q";
String o = "r";
String p = "s";
String q = "t";
String r = "u";
String s = "v";
String t = "w";
String u = "x";
String v = "y";
String w = "z";
String x = "a";
String y = "b";
String z = "c";
Scanner in = new Scanner(System.in);
System.out.println("Please enter the text you wish to encode.");
String place = in.nextLine();
System.out.println(place);
}
}
我正在尝试将输入的内容转换为上面的变量
我想我将所有这些字符串都声明为变量,但我不知道如何通过输入使它们可变。我将给您一些提示,如何进行解码和编码将是相反的过程 首先,你们应该知道计算机只能理解被称为
Ascii码的数字
Ascii码是字符的数字表示,如b
、&
、A
,等等,因此,大写字母和小写字母都有Ascii码
,它是int类型
你应该知道的另一个主题是Casting
强制转换是将一种类型转换为另一种类型,如将int转换为char或将int转换为char,但您应该知道强制转换某些类型无法转换为另一种类型,如将boolean转换为int,这是不可能的
让我们谈谈编码,把解码留给你们去弄清楚,因为它和编码是相反的
关于如何编码的提示
不需要像String a=“a”
这样定义字符串李>
由于您了解了作为数字的Ascci代码,您可以使用强制转换在97到122之间进行for循环,以获得小字符
例如:
System.out.println("Asci code of small a is " + (int)'a' + "\nsmall a is " + (char)97);
输出:
Asci小a代码为97
小a是a
注意:您可以将char转换为int,并将int转换为char
因为你在处理数字,所以你可以做加法
例如:
System.out.println("Three char after a is " + (char)(97+3));
输出:
a后面有个字符是d
对于字符x、y和z,您可以从其asci代码中减去23,例如,120-23
将给出a的asci代码。整个编码和解码代码
import java.util.Scanner;
public class coder {
public static void main(String[] args) {
String[] qe = {"1 ","2 ","3 ","4 ","5 ","6 ","7 ","8 ","9 ","10 ","11 ","12 ","13 ",
"14 ","15 ","16 ","17 ","18 ","19 ","20 ","21 ","22 ","23 ","24 ","25 ","26 "};
String [] eq = {"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"};
Scanner in = new Scanner(System.in);
System.out.println("Please enter the text you wish to encode.");
String place = in.nextLine();
place = place.toLowerCase();
place = place.replace("a", qe[0]);
place = place.replace("b", qe[1]);
place = place.replace("c", qe[2]);
place = place.replace("d", qe[3]);
place = place.replace("e", qe[4]);
place = place.replace("f", qe[5]);
place = place.replace("g", qe[6]);
place = place.replace("h", qe[7]);
place = place.replace("i", qe[8]);
place = place.replace("j", qe[9]);
place = place.replace("k", qe[10]);
place = place.replace("l", qe[11]);
place = place.replace("m", qe[12]);
place = place.replace("n", qe[13]);
place = place.replace("o", qe[14]);
place = place.replace("p", qe[15]);
place = place.replace("q", qe[16]);
place = place.replace("r", qe[17]);
place = place.replace("s", qe[18]);
place = place.replace("t", qe[19]);
place = place.replace("u", qe[20]);
place = place.replace("v", qe[21]);
place = place.replace("w", qe[22]);
place = place.replace("x", qe[23]);
place = place.replace("y", qe[24]);
place = place.replace("z", qe[25]);
System.out.println(place);
place = place.replace("26 ", eq[25]);
place = place.replace("25 ", eq[24]);
place = place.replace("24 ", eq[23]);
place = place.replace("23 ", eq[22]);
place = place.replace("22 ", eq[21]);
place = place.replace("21 ", eq[20]);
place = place.replace("20 ", eq[19]);
place = place.replace("19 ", eq[18]);
place = place.replace("18 ", eq[17]);
place = place.replace("17 ", eq[16]);
place = place.replace("16 ", eq[15]);
place = place.replace("15 ", eq[14]);
place = place.replace("14 ", eq[13]);
place = place.replace("13 ", eq[12]);
place = place.replace("12 ", eq[11]);
place = place.replace("11 ", eq[10]);
place = place.replace("10 ", eq[9]);
place = place.replace("9 ", eq[8]);
place = place.replace("8 ", eq[7]);
place = place.replace("7 ", eq[6]);
place = place.replace("6 ", eq[5]);
place = place.replace("5 ", eq[4]);
place = place.replace("4 ", eq[3]);
place = place.replace("3 ", eq[2]);
place = place.replace("2 ", eq[1]);
place = place.replace("1 ", eq[0]);
System.out.println(place);
}
}
从编写代码开始。当您遇到特定的代码问题时,可以发布问题。这是唯一的解决办法,我道歉。我把密码放进去了。啊!将目标字母表存储为String a=“d”
对您没有帮助,因为您无法将字符串中的字母转换为变量名。您需要了解数组和其他容器类。对于手头的任务,编写一个函数,将源字母转换为目标字母。您可以利用这一事实,即26个字母构成ASCII中的一个连续块。顺便说一句,您需要的代码称为凯撒密码。搜索它和SO上的Java标记应该会给你提示如何攻击它。@StevenJobs loryhbrx不可能给你iloveyou,但iloveyou给你loryhbrx。如果是这样,请让我知道,这样我就可以发布我的答案:)