3

我在这里遇到了一些代码,我想做的是将字符串转换为其 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);


   }
}

提前致谢

4

1 回答 1

5

几件事:

更改 val = val -32;val = val -30;在原始问题陈述中获得所需的正确减法。

接下来,改变

enc = "" + val;enc = (char)val;

这样您就可以将值转换为正确的字符。以前,您只是将它连接到一个字符串,这不会进行任何转换。您还需要在文件顶部声明enc为 a 。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);
于 2013-10-29T15:48:38.837 回答