我在这里遇到了一些代码,而我正在尝试将字符串转换为ASCII值,从中减去30然后转换回字符串。
E.g. Enter - hello
Convert to - 104 101 108 108 111
Subtract - 74 71 78 78 81
display - JGNNQ
代码:
import javax.swing.*;
public class practice {
public static void main (String[] args) {
String enc = "";
String encmsg = "";
String msg = JOptionPane.showInputDialog("Enter your message");
int len = msg.length();
for (int i = 0; i< len ; i++) {
char cur = msg.charAt(i);
int val = (int) cur;
val = val -32;
enc = "" + val;
encmsg = encmsg + enc;
}
JOptionPane.showMessageDialog(null, encmsg);
}
}
提前致谢
答案 0 :(得分:5)
夫妻俩:
将val = val -32;
更改为val = val -30;
,以便在原始问题陈述中获得所需的正确减法。
接下来,更改
enc = "" + val;
至enc = (char)val;
这样您就可以将值转换为正确的字符。以前,你只是将它连接到一个字符串,它不会进行任何转换。您还需要在文件顶部将enc
声明为char
。
完整的工作代码应如下:
char enc;
String encmsg = "";
String msg = JOptionPane.showInputDialog("Enter your message");
int len = msg.length();
for (int i = 0; i < len; i++) {
char cur = msg.charAt(i);
int val = (int) cur;
val = val - 30;
enc = (char) val;
encmsg = encmsg + enc;
}
JOptionPane.showMessageDialog(null, encmsg);