Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > Вернуть double[] побочным эффектом. |
Автор: arcsupport 28.12.2011, 16:00 |
Как в процедуре с помощью побочного эффекта вернуть массив double[]. У меня почему-то возвращаются одни NaN. |
Автор: jk1 28.12.2011, 16:05 |
О какой процедуре речь? Приведите пожалуйста код. |
Автор: MaxPayneC 28.12.2011, 16:34 |
А мне интересно, о каком побочном эффекте речь. |
Автор: arcsupport 28.12.2011, 17:50 | ||
Ну, например, вот так для proc2:
|
Автор: _Y_ 28.12.2011, 18:18 | ||||||
Как понимаю, нужно чтобы по формальному аргументу метода proc2 возвращался новый массив? Или я чего-то недополупонимаю, либо вот так напрямую это невозможно. Ведь массив это объект, а объекты передаются по ссылке. При вызове proc2(double[]p) Вы передаете в метод именно ссылку на объект, т.е. на его адрес. В методе же модифицируете не объект, а адрес. А поскольку адрес это не объект, то обратно он и не передается, т.к. по ссылке передаются только объекты. Я бы просто упаковал все в простенький класс:
И вызов осуществлял бы таким образом:
а сам метод переписал бы так:
|
Автор: arcsupport 28.12.2011, 18:20 |
А можно ли это сделать с использованием System.arraycopy? |
Автор: Stolzen 28.12.2011, 19:00 | ||
Ага, можно
[13.0, 14.0] |
Автор: arcsupport 28.12.2011, 20:49 |
Спасибо. |
Автор: _Y_ 29.12.2011, 10:32 |
System.arraycopy вам годится только в том случае, если программа всегда работает с массивами одинаковой длины. В противном случае либо получите комбинацию из элементов нового и старого массивов, либо ошибку ArrayIndexOutOfBoundsException |