Java - возвращение массива из метода в main - PullRequest
2 голосов
/ 19 февраля 2011

Был бы рад, если бы кто-нибудь смог мне помочь со следующей проблемой. Предполагается, что следующий метод возвращает массив, чья i-я запись - это число раз, которое int i появилось в массиве a. Имя метода дает использование этого метода. Рисование гистограммы данных, найденных в массиве a.

    public static int histogram(int M, int[] a){

        int[] b = new int[M];

        for (int i = 0; i < M; i++){

           int w = 0; 

            for (int j = 0; j < a.length; j++){ 

            if (a[j] == i){ 
            w++;
            }
        }

           b[i] = w; 

     }

   return b; 
}

По моему мнению, код правильный - он может быть неправильным - я не могу проверить это, потому что у меня есть ошибка, которая действительно беспокоит меня.

Histogram.java: 22: несовместимые типы найдено: int [] требуется: int возврат б;

1) Что значит выше ?? Например, в Интернете и в моем справочнике они также используют только «return b;» вернуть массив в основную программу.

2) Как именно работает функция возврата? Смогу ли я использовать следующий код для печати значений массива b? Потому что в данный момент я получаю ошибку, так как массив b не инициализируется в main ... Я думаю, что ошибка исчезнет, ​​если ошибка 1 будет решена. Я новичок в JAVA, поэтому не буду знать - новичок и в программировании.

for (int x = 0; x < M; x++){

        System.out.printf("%d ", b[x]);

     }`

3) Должен ли я печатать значения в методе histogram ()? Вопрос, который нужно ответить, состоит в том, чтобы «вернуть» массив со значениями гистограммы.

Действительно был бы рад, если бы вы могли помочь ...

Если вы зашли так далеко - большое спасибо ... Даже чтение здесь очень много значит:)

Ответы [ 4 ]

9 голосов
/ 19 февраля 2011

Вы должны попытаться вернуть массив целых чисел вместо одного целого числа

public static int[] histogram ...

Хотя я не уверен насчет 2 и 3.

2) return не является функцией,это ключевое слово, заставляющее вас покинуть метод.
3) Вы можете, если хотите.

edit
Какие бы переменные вы ни объявили в методе histogram, оставайтесь тамони местные.Если вам нужна переменная в методе main, объявите ее.Например,

int[] b = histogram(param1, param2);
3 голосов
/ 19 февраля 2011

2.) Ваш main должен иметь что-то вроде:

int[] b = histogram(M, a);

3.) Нет, лучше, как у вас, я думаю - держать ввод / вывод в основноми просто оставьте свои гистограммы в методе гистограммы.

0 голосов
/ 13 марта 2014

когда вы используете массив, вы должны написать его в методе класса, а не в теле класса

, а также return - это не метод или функция, это просто ключевое слово, которое мы используем внаши методы

поэтому запишите его в метод, а затем скомпилируйте снова!

0 голосов
/ 08 февраля 2013
Public static int[] // since the return is an array

Я думаю, вы можете вызвать метод histogram(); в main method и надеяться, что он будет работать.

...