15

下面是我的代码,它打印出 J=74、A =65 和 M=77。作为向下移动字母表的结果,我如何让它只打印字符 K、B、N?

BufferedReader buff = new BufferedReader(new InputStreamReader(System.in));
String string = JOptionPane.showInputDialog( " Please Enter Code " );

for (int i = 0; i < string.length (); ++i) {
    char c = string.charAt(i);
    int j = (int)c;
}


System.out.println("ASCII OF "+c +" = " + j + ".");
4

4 回答 4

17

简单地投射intchar

System.out.println((char) 65);        // A
System.out.println((char) ('A' + 1)); // B
System.out.println((int) 'A');        // 65

请注意,这是对幼稚问题(或至少是口语不好)的原始尝试。代码段的最后一行已经包含了您需要的所有内容。也许你只是错过了char在 Java 中实际上是一个整数类型,所以你可以使用char带操作符的字面量,+比如%

System.out.println((char) ('Z' + 5));
System.out.println((char) ('Z' / 2));
System.out.println((char) ('Z' % 31));
于 2012-10-22T13:54:50.360 回答
8

我想你已经给出了问题本身的答案。您应该将整数转换为 char 如下

    int j=77;
    char c=(char)j;
    System.out.println(c);
于 2012-10-22T14:29:27.207 回答
3

你的意思是?

for (int i = 0; i < string.length (); ++i) {
    char c = string.charAt(i);
    c++; // next character.
    System.out.print(c);
}
于 2012-10-22T13:55:58.580 回答
0

ASCII 字符开头可以为零,因为必须正确完成从字符串到整数的转换。工作解决方案如下所示。

    String s= "01001000";
    int AsciiCode = Integer.valueOf(s, 2);
    char c= (char) AsciiCode;
    System.out.println(c);
于 2021-01-13T10:59:17.593 回答