Невозможно вызвать add (char) для типа массива char [] - PullRequest
0 голосов
/ 19 января 2020
public static void Reverse(char[] val){
    char[] ch = val;
    for (int g = val.length - 1; g >= 0; g--) {
        ch.add(val[g]);
    }

Я получаю сообщение о том, что не могу добавить символы в список символов, но разве список символов не содержит только символы?

Ответы [ 2 ]

1 голос
/ 19 января 2020
//if you really want no side effects for the source array and no return:

public static void reverse(char[] value){
    char[] ch = new char[value.length];
    int i=value.length-1;

    for(var c:value){
        ch[i--]=c;
    }
}

// if you want to do an in place reverse of the passed-in array:

public static void reverse2(char[] value){
    int l=value.length-1;

    for(int i=0; i<l/2; i++){
        char c = value[i];
        value[i]=value[l-i];
        value[l-i]=c;
    }

}
0 голосов
/ 19 января 2020

Массив - это не список. char[] это массив. Массивы имеют фиксированный размер, поэтому вы не можете добавлять к ним элементы или удалять их. Если вы хотите использовать списки, измените свой код:

public static void Reverse(List<Character> val){
    List<Character> ch = val;
    for (int g = val.size() - 1; g >= 0; g--) {
        ch.add(val.get(g));
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...