Как правильно передать массив между методами - PullRequest
1 голос
/ 19 марта 2012

У меня проблемы с передачей массива между методами, и ниже приведен фрагмент кода.

Я успешно создал два массива, computerDice и humanDice, и теперь мне нужно подсчитать количество единиц, двойок, тройок и т. Д. В каждом массиве.Смотрите пример под кодом.Я подтвердил, что а.) Что входные массивы содержат действительные данные и б) счетчик работает правильно.

Однако сейчас я пытаюсь вернуть occurences в виде массива - шесть различных значенийиз occurence, представляющих единицы, пары, тройки и т. д. в массиве, отправленные методу - и не увенчались успехом.У меня продолжают возникать проблемы с моими occurence return ... несовместимыми типами, плохой операнд, напечатанный для операнда + ..., и я получаю что-то свое в каждой попытке.Я явно что-то упускаю из-за того, как привести / заполнить эту переменную.

ПРИМЕЧАНИЕ: это домашняя работа;Я просто пытаюсь понять мои концептуальные ошибки.

// SEND VALUES TO numToFind AND CREATE SCORING ARRAY FOR computerDice AND humanDice
        for(int i=1;i<7;i++)
        {
            int[] pipCountsComputer = findVals(computerDice,i);
            int[] pipCountsHuman = findVals(humanDice,i);
            System.out.println(i + " " + pipCountsComputer + " " + pipCountsHuman);
        }
    }
//
// COUNT INSTANCES OF numToFind IN arr[] AND RETURN THE occurence
    public static int[] findVals(int[] arr, int numToFind)
    {
        int[] occurence=0;
        for (int i = 0; i < arr.length; i++)
        {
            if (arr[i] == numToFind)
                occurence = occurence+1;
        }
        return occurence;
    }

Я уже подтвердил это, например, учитывая computerArray = 52334 и humanArray = 11163 мой отпечатокоператоры дают:

1 0 3 (единиц, у компьютера 0 единиц, у человека 3 единицы)
2 1 0 (двойки, у компьютера 1 двойка, у человека 0 двойок)
3 2 1и т. д.
4 1 0 Мои желаемые массивы для этого набора данных:
5 1 0 pipCountsComputer{0,1,2,1,1,1}
6 0 1 pipCountsHuman{3,0,1,0,0,1}

Ответы [ 2 ]

3 голосов
/ 19 марта 2012

Если я правильно понял, попробуйте это для подсчета количества вхождений:

public static int findVals(int[] arr, int numToFind) {
    int occurence = 0;
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] == numToFind)
            occurence++;
    }
    return occurence;
}

Я действительно не понимаю, почему вы хотите вернуть массив, вхождение простономер.

2 голосов
/ 19 марта 2012

Поскольку это пахнет домашней работой, я не буду давать вам ответ, но намекаю на это ...

Теперь я пытаюсь вернуть вхождения в виде массива

Вы еще не закодировали это ... посмотрите снова на сигнатуру метода

public static void findVals(int[] arr, int numToFind)

...