2016-02-20 1 views
0

Для функции нижеВключения целочисленного массива в полукокс, прежде строки

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; 
} 

Как бы вы преобразовать Int массив символов, прежде чем он станет строкой? Я продолжаю либо получать эту ошибку:

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) 

Или он просто возвращает числа массива в строке.

+2

'message' пуст. но вы пытаетесь «message.codePointAt (i)». – Satya

ответ

1

Вы можете получить символ с помощью этого:

Character.toChars(symbols[i])

Так что ваш код должен быть как:

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

    } 
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; 

}

Смежные вопросы