java替换代码是单向工作的,但不是反向工作的
我正在尝试做一个简单的“翻译”项目,因为我还在学习java。但是出了点问题,我花了很多时间,仍然不知道如何修复它。代码如下:
public static void main(String[] args)
{
char[] abcCode = {'!','@','#','$','%','^','&','*','(',')','_','-','+','=','|','`','~','}','{','[',']','"',';',':','>','<','?','/','\''};
char[] numCode = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','x','y','z'};
String src = args[0];
String result = "";
for(int i=0; i < src.length();i++)
{
char ch = src.charAt(i);
if ('a' <= ch && ch <= 'z')
result += abcCode[ch-'a'];
else if (abcCode[0] <= ch && ch <= abcCode[15])
result += numCode[ch-abcCode[0]];
}
System.out.println("src: "+src);
System.out.println("result: "+result);}}
例如,如果我输入“lol”,我将得到“-|-”,这是我想要的。但是相反的方法是行不通的,我应该输入-|-,然后得到“lol”。此外,如果我键入“@”和其他一些字符,我将得到一个错误。有什么问题吗?有灯光吗
# 1 楼答案
您的问题是abcCode数组中填充的内容在转换为数字时,不会从一个值开始,而是在连续的元素中递增一个值。我将以下代码放在数组声明之后:
并得到以下输出:
(在我的输出中,每个数字位于不同的行上,但我忘了如何在答案中强制使用。)
如您所见,生成的数字不是其他数组的有效索引