Пустой тип здесь не разрешен при использовании toCharArray? - PullRequest
2 голосов
/ 31 декабря 2011

Этот код предназначен для сравнения символов в двух строках и определения их одинаковости.Это делается путем взятия строк, преобразования их в массив символов, их сортировки и последующего сравнения.

private boolean sameChars(String firstStr, String secondStr)
{
    return Arrays.equals(Arrays.sort(firstStr.toCharArray()), Arrays.sort(secondStr.toCharArray()));
}

Когда я компилирую этот код, он выделяет (firstStr.toCharArray()) и говорит 'void' type not allowed here.Что является причиной ошибки и как я могу ее исправить?

Ответы [ 3 ]

7 голосов
/ 31 декабря 2011

Arrays.sort() не возвращает массив.Вам нужно будет сохранить строки массива символов в локальных переменных, затем вызвать метод сортировки для каждой переменной и, наконец, сравнить два массива, используя Arrays.equals():

char[] firstStrArr = firstStr.toCharArray()
char[] secondStrArr = secondStr.toCharArray()
Arrays.sort(firstStrArr);
Arrays.sort(secondStrArr);
return Arrays.equals(firstStrArr,secondStrArr);
1 голос
/ 31 декабря 2011

http://docs.oracle.com/javase/6/docs/api/java/util/Arrays.html#sort%28char[]%29

Вы должны ссылаться на два символа [] a, b;Array.sort a, Array.sort b и вернуть Array.equals a, b

    private boolean sameChars(String firstStr, String secondStr)
    {
        char[] first = firstStr.toCharArray();
        char[] second = secondStr.toCharArray();
        Arrays.sort(first);
        Arrays.sort(second);
        return Arrays.equals(first, second);
    }
1 голос
/ 31 декабря 2011

Arrays.sort возвращает void.Вы не можете передать его 'значение' в Arrays.equal.сортирует на месте .

...