Преобразование массива int в String и возврат (getArrayString) - PullRequest
0 голосов
/ 23 октября 2019

Мне нужно создать метод getArrayString (int [], массив разделителей), который возвращает строку, в которой за каждой записью массива (кроме последней) следует указанный разделитель.

Я знаю конструкторметодов массивов, но в этом первом я должен оштрафовать формулу для возврата массива, кроме последнего, а затем преобразовать мой массив int [] в String и вернуть его с разделителем.

public static getArrayString(int[] array, char separator) {
    if(array == null ||array.length == 0) {
        return null;
    }
    int size =0;
    for(int i =0; i < array.length; i++) {

        size++;
    }
    int[] newArray2 = new int[size];
    for(int i= 0, position = 0; i < array.length; i++) {
        newArray2[position]=i;
        position++;
        System.out.print(i+',');
    }
    //  String StArray = Arrays.toString(newArray2);
    //  return StArray + separator;
    //  newArray2 = convertStringArrayToString(StArray,separator);
    //  return StArray;
    //  
    //return Arrays.toString(newArray2)+ separator;
}
// private static String convertStringArrayToString(String[] newArray,char separator) {
//   StringBuilder sb = new StringBuilder();
//   for(String StArray : newArray);
//   return sb.substring(0,sb.length()-1);
// }

Комментарииидеи преобразования в строку и ее возврата!

Ответы [ 2 ]

2 голосов
/ 23 октября 2019

Присоединение int [] к строке

Редактировать: Я только что заметил, что у вас есть int [], а не строка []. Я бы, вероятно, использовал подход Streams:

String result = Arrays.stream(array)
    .mapToObj(String::valueOf)
    .collect(Collectors.joining(separator));

Если вы действительно хотите использовать цикл for, вам следует использовать StringJoiner:

public static getArrayString(int[] array, char separator) {
    if(array == null || array.length == 0) return "";

    String separatorString = String.valueOf(separator);
    StringJoiner sj = new StringJoiner(separatorString);

    for(int element : array) {
        sj.add(String.valueOf(element));
    }

    return sj.toString();
}

Joining String [] toa String

Формулировка вашего вопроса заставляет меня думать, что вы изучаете это для класса, но если нет, просто используйте встроенную функцию join :

// join takes Iterable<? extends CharSequence> or vararg
String.join(separator, myArray)
String.join(separator, myList)
String.join(separator, charSeq1, charSeq2, ..., charSeqN)

Если вам нужен префикс / суффикс, вы можете использовать StringJoiner :

StringJoiner sj = new StringJoiner(separator, prefix, suffix);
String result = sj.add(s1).add(s2).add(s3).toString();

..., который также является основой Stream Collectors.joining:

String result = Arrays.stream(array)
    .collect(Collectors.joining(separator));

String result = Arrays.stream(array)
    .collect(Collectors.joining(separator, prefix, suffix));
1 голос
/ 23 октября 2019
public static String getArrayString(int[] array, char separator) {
    if(array == null || array.length == 0) {
        return null;
    }

    String str = "";
    for(int i = 0; i < array.length-1; i++) {
        str += "" + array[i]+ separator;
    }

    // add the last one
    str += array[array.length - 1];
    return str;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...