对于下面的功能
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中数组的数字。
答案 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;
}