как в жава передать массив методу?

nade

private void initTable( connectCoordinate unlimClusterTable[][], connectCoordinate unlimClusterTableDiag[] )
{
for( int i = 0; i < clusterNumber; i++ ) {
for( int j = 0; j < clusterNumber; j++ ) {
unlimClusterTable [j] . x = 0;
unlimClusterTable [j] . y = 0;
}
}
}
Я не могу рюхнуть, что здесь не так, как только доходим до обращения к массивам после фора апплет падает со словами нот инициалайзед...ЕСли коментим оба массива. то оставшая ся часть кода оработает
Происходит Лажа, Оба массива на самом деле двумерные! просто форум одни из скобок с Итой буковкой съедает и все тут.ю

korol41

Ты хотел сказать,
private void initTable( connectCoordinate unlimClusterTable[][], connectCoordinate unlimClusterTableDiag[] )
{
for( int i = 0; i < clusterNumber; i++ ) {
for( int j = 0; j < clusterNumber; j++ ) {
unlimClusterTable [i] [j] . x = 0;
unlimClusterTable [j] [i] . y = 0;
}
}

}

nade

Именно так!
Так подскажете, где ошибка?

psihodog

А ты не забыл перед тем, как передавать массивы, создать их?

unlimClusterTable= new connectCoordinate[X][];
for (int i; i<X; ++i) {
unlimClusterTable[i]= new connectCoordinate[Y(i)];
for (int j; j<Y(i); ++j) unlimClusterTable[i][j]= new connectCoordinate;
}

Тебе сюда: http://java.sun.com/docs/books/tutorial/java/data/arraybasics.html

nade

private void searchUnlimCluster {
connectCoordinate[][] unlimClusterTable = new connectCoordinate[clusterNumber][clusterNumber];
connectCoordinate[] unlimClusterTableDiag = new connectCoordinate[clusterNumber];
Это к тому, что не забыл:) может опять же что не так сделал:)
За ссылку спасибо, пойду почитаю, но если кто зхдесьт сможет ответить гнушаться не буду:)

psihodog

а объекты ты потом создал?
(смотри второй for)

nade

Не очень понял про создание обхъекта, можешь прояснить....
Очень возможно что именно тут собака и порылась...

psihodog

Понимаешь, это не С и не С++.
Тут, когда ты создаёшь массив, создаётся массив указателей (впрочем, как и любое объявление переменной здесь создаёт ссылку, а не объект).
Здесь
SomeClass a[][];
примерно эквивалентно С++-ному:
SomeClass *a[][];
Поэтому уже после создания массива должен существовать цикл, создающий объекты, типа:

for (int i= 0; i<X; ++i)
for (int j= 0; j<Y; ++i)
a[i][j]= new SomeClass;

nade

спасибо! все получилось!
Огромное спасибо за разъяснения!
Оставить комментарий
Имя или ник:
Комментарий: