在String之前将int数组转换为char

时间:2016-02-20 05:58:55

标签: java arrays string char int

对于下面的功能

public static String symbolArrayToString(int[] symbols) { 

  String message = "";

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

        symbols[i] = message.codePointAt(i)-65;
        message = message + Integer.toString(symbols[i]);

        message.toUpperCase();

    }
    System.out.println(message);

    return message; 
}

在成为String之前,如何将int数组转换为chars?我继续得到这个错误:

java.lang.StringIndexOutOfBoundsException: String index out of range: 0
    at java.lang.String.codePointAt(Unknown Source)
    at Caesar.symbolArrayToString(Caesar.java:50)
    at Caesar.main(Caesar.java:16)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at   edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand
      (JavacCompiler.java:272)

或者它只返回String中数组的数字。

2 个答案:

答案 0 :(得分:1)

你可以使用这个来获得角色:

Character.toChars(symbols[i])

所以你的代码应该是:

for (int i = 0; i < symbols.length; i++) {
        message = message + String.valueOf(Character.toChars(symbols[i]));

    }

答案 1 :(得分:1)

尝试使用.codePointAt更改行以使用数组本身。试试这个:

public static String symbolArrayToString(int[] symbols) { 

String message = "";

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

    symbols[i] = symbols[i] - 65;
    message = message + Integer.toString(symbols[i]);

    message.toUpperCase();

}
System.out.println(message);

return message; 

}