有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    您的问题是abcCode数组中填充的内容在转换为数字时,不会从一个值开始,而是在连续的元素中递增一个值。我将以下代码放在数组声明之后:

       for (char c: abcCode)
       {
         System.out.println(c - args[0].charAt(0));
       }
       return;
    

    并得到以下输出:

    -91 -60 -89 -88 -87 -30 -86 -82 -84 -83 -29 -79 -81 -63 0 -28 2 1 -1 -33 -31 -90 -65 -66 -62 -64 -61 -77 -85

    (在我的输出中,每个数字位于不同的行上,但我忘了如何在答案中强制使用。)

    如您所见,生成的数字不是其他数组的有效索引