2016-02-20 4 views
0

Я начинаю пытаться написать программу для назначения шифрования Цезаря для класса. В настоящее время я застреваю, пытаясь создать функцию, которая будет делать противоположность первой функции, взять целочисленный массив и вернуть строку. Я полностью потерял то, как это сделать в этот момент, и действительно могу использовать некоторую помощь.Преобразование целочисленного массива в строку

public static int[] string(String str) { 
    int [] arr = new int [str.length()]; 

    for (int i = 0; i < str.length(); i++) { 
     str.toUpperCase(); 
     arr[i] = str.charAt(i)-65; 
     // System.out.println(arr[i]);--> check to see if stringTo was working 
    } 
    return arr; 
} 



public static String symbol(int[] symbols) { 
    String message = new String(); 

    char[] letters = new char[symbols.length]; 



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

     symbols[i] = letters[i]; 

     message.toUpperCase(); 
     message = message.toString(); 


     System.out.print(message); 

    }  

    return message; 
} 
+0

класс Строка имеет конструктор 'новый String (символ [] значение)'. Просто используйте его. –

+2

Какая ошибка вы получаете? –

+1

см. Это http://stackoverflow.com/questions/10904911/how-to-convert-an-int-array-to-string-with-tostring-method-in-java –

ответ

1
int[] a = {1,2,3,4,5,6}; 

String str = ""; 

for(int i=0;i<a.length;i++) 
{ 
    str = str + Integer.toString(a[i]); 
} 
System.out.println(str); 
+0

Быстрый вопрос: Что делать, если мне нужно изменить int arr на символы, прежде чем он станет строкой. Я думаю, что с этим я столкнулся. – Yaz

+0

Вам не нужно 'Integer.toString()'. 'str = str + arr [i]' будет делать. –

0

Если я понимаю, код в вашей первой функции правильно, то вы хотите что-то, что превращает [1,2,3,4,5] в "12345" правой?

Тогда ваша функция может выглядеть следующим образом:

public static String arrayToString(int[] array) { 
    String result = ""; 
    for(int i : array) { 
     result += i; 
    } 
    return result; 
} 

Но это может иметь ужасную производительность для длинных массивов, поскольку каждый += создает новый String так на самом деле это было бы лучше:

public static String arrayToString(int[] array) { 
    StringBuilder builder = new StringBuilder(); 
    for(int i : array) { 
     builder.append(i); 
    } 
    return builder.toString(); 
} 

javac или JVM может фактически преобразовать первый фрагмент кода во второй автомат.

+0

Да, возможно, компилятор. Это легко добавить, что я думаю, что Java 5 или 7 .. не помню, что, вероятно, попытается преобразовать его в одну строку, и это будет иметь такое же влияние, что и на использование StringBuilder. – pompanoSlayer

0

Вот фрагмент кода, который поможет вам.

public String changeIntToString(int aNumber){ 
    String theString = ""; 
    theString += aNumber; 
    return theString; 
} 

Все, что добавлено в строку, превратится в строку. Вот еще один пример.

String lotOfInt = "" + 1 + 2 + 3; 

Это превратится в строку «123». Я думаю, вы получите картину. Теперь вам просто нужно пройти через этот массив и объединить его в строку.

Бонус и правильный способ для этого ... Используйте класс StringBuilder. Найдите, что это такое и как его использовать. ;)

Отредактировано: Ah. Мартинс избил меня. :)

0

подход с использованием Java 8 потоков:

int[] intArray = new int[] {1, 2, 3, 4}; 

String result = IntStream.of(intArray) 
          .mapToObj(String::valueOf) 
          .collect(Collectors.joining(",")); 
System.out.println(result); // "1,2,3,4"