java - 如何将数字加密为正确的字符串
问题描述
我正在尝试通过输入与某个字母相对应的数字来制作解密方法。
使用当前代码,当我输入 25 时,我只会输出“ab”。有人可以指出我正确的方向吗?
我已经尝试在我的 中使用char ch = Character.toLowerCase(str.charAt(i));
和拥有,但是当我达到 10+ 时,这给了我一个问题。ch
switch
谢谢你。注意安全。
public void decryptNumbers() {
String str, newString = " ";
System.out.print("Numbers to decrypt: ");
try {
Scanner sc = new Scanner(System.in);
str = sc.nextLine();
for (int i = 0; i < str.length(); i++) {
int test1 = Integer.parseInt(String.valueOf(i));
switch (test1) {
case 0:
newString = newString + "a";
break;
case 1:
newString = newString + "b";
break;
case 2:
newString = newString + "c";
break;
case 3:
newString = newString + "d";
break;
case 4:
newString = newString + "e";
break;
case 5:
newString = newString + "f";
break;
case 6:
newString = newString + "g";
break;
case 7:
newString = newString + "h";
break;
case 8:
newString = newString + "i";
break;
case 9:
newString = newString + "j";
break;
case 10:
newString = newString + "k";
break;
case 11:
newString = newString + "l";
break;
case 12:
newString = newString + "m";
break;
case 13:
newString = newString + "n";
break;
case 14:
newString = newString + "o";
break;
case 15:
newString = newString + "p";
break;
case 16:
newString = newString + "q";
break;
case 17:
newString = newString + "r";
break;
case 18:
newString = newString + "s";
break;
case 19:
newString = newString + "t";
break;
case 20:
newString = newString + "u";
break;
case 21:
newString = newString + "v";
break;
case 22:
newString = newString + "w";
break;
case 23:
newString = newString + "x";
break;
case 24:
newString = newString + "y";
break;
case 25:
newString = newString + "z";
break;
case 26:
newString = newString + "æ";
break;
case 27:
newString = newString + "ø";
break;
case 28:
newString = newString + "å";
break;
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
System.out.println("Decryption done:" + newString);
}
解决方案
我想我开始理解您以前的代码(最好将其包含在问题中):
你有过
char ch = Character.toLowerCase(str.charAt(i));
switch (ch) {
case '0':
newString = newString + "a";
break;
case '1':
newString = newString + "a";
break;
// more cases here
}
而且您不知道如何处理字母“k”的大小写,因为为此您需要一个case '10':
.
这是一个问题,因为“10”没有字符——数字“10”由两个字符组成。您无法处理一次只查看一个字符的代码。
这暗示了您的设计存在更深层次的问题。在您的设计中,输入包含“10”,它可能意味着两种不同的东西:
- 它可能意味着“ba”
- 它可能意味着“k”
使用当前的设计,您无法区分这两种情况。
修复设计的一种方法是将编码字母的数字分开,例如使用空格 ( ' '
) 字符。那将意味着
- “ba”被编码为“1 0”
- “k”被编码为“10”
这将允许您区分这两种编码。
推荐阅读
- javascript - 使用从 json 数据读取的循环创建多个 javascript 对象
- google-chrome-extension - 使用 var socket = chrome.sockets.tcpServer; 在 chrome 扩展中
- linux - VS Code SSH 远程连接问题
- javascript - Woocommerce 产品个人弹出窗口(简码)
- java - 静态方法中的 Lamba 如何实例化接口
- javascript - 我不能离开 JavaScript 的 while 循环
- django - 如何在 django 中编写动态站点地图,我的不工作
- android - 如何使用 expo.contacts 中的电话号码
- javascript - 客户端无法访问 socket.io 服务器
- html - 文本未在列内换行