方法在java中返回int而不是char

时间:2016-11-25 09:41:50

标签: java methods char

如标题中所述,我在编写的java方法中遇到问题。这是代码:

public static char shift(char c, int k) {

    int x = c;

    int d = c - 65 + k;
    int e = c - 97 + k;

    if (x > 64 && x < 91 && d >= 0 ) {

        c = (char) ( d % 26 + 65);

    } else if (x > 96 && x < 123 && e >= 0 ) {

        c = (char) (e % 26 + 97 );
    }


    if (x > 64 && x < 91 && d < 0 ) {

        c = (char) ( (d + 26) % 26 + 65);

    } else if (x > 96 && x < 123 && e < 0 ) {

        c = (char) ( (e + 26) % 26 + 97);
    }

    return c;
}

我想换一个字母的字母。如果我像这样(Caesar Chiper)使用它,代码就可以完美地运行:

String s = " ";
    String text = readString();
    int k = read();

    for (int i = 0; i < text.length(); i++) {

        char a = text.charAt(i);
        int c = a;

        int d = a - 65 + k;
        int e = a - 97 + k;

        if (c > 64 && c < 91 && d >= 0 ) {

            a = (char) ( d % 26 + 65);

        } else if (c > 96 && c < 123 && e >= 0 ) {

            a = (char) (e % 26 + 97 );
        }
          if (c > 64 && c < 91 && d < 0 ) {

            a = (char) ( (d + 26) % 26 + 65);

        } else if (c > 96 && c < 123 && e < 0 ) {

            a = (char) ((e + 26) % 26 + 97);
        }

        s += a;
    }

    System.out.println(s);
}

我不明白为什么方法转换在我使用它时会返回一个整数:shift(&#39; c&#39;,5);它返回104,这是h的dec数。我是java的初学者,也是个慢人。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

你的错误是你可能正在添加两个字符的unicodes。 如果您执行以下操作,就会发生这种情况:

System.out.println('b' + 'a');

或在你的情况下

System.out.println(shift('c', 5) + 'a');

要获得所需的结果,请在打印前将char转换为字符串:

String result = Character.toString(shift('c', 5));
System.out.println(result + 'a');

System.out.println(shift('c', 5) + "a");