Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Если поле класса это массив, как инициализировать / 6 сообщений из 6, страница 1 из 1
05.11.2005, 02:30
    #33362312
Olga1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если поле класса это массив, как инициализировать
Привет!!!
Помогите справиться с проблемой
Есть классы Memory и Test
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 public   class  Memory
{
     boolean  mem [];
     boolean  n;
}

 public   class  Test
{
  public   static   void  main (String [] args)  { 
    Memory test =  new  Memory();
    test.n=true; // без проблем
    test.mem [] ={ true, false} ; // не проходит, выдает ошибку not a statement
}
Как я могу массив mem класса Memory в классе Test заполнить ?
...
Рейтинг: 0 / 0
05.11.2005, 06:35
    #33362329
friend-зкщпук
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если поле класса это массив, как инициализировать
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
 public   class  Memory
{
// Инициализацию можно сделать только при объявлении переменной
 boolean [] mem ={ true, false} ;
 boolean  n;
}

 public   class  Test
{
 public   static   void  main (String [] args) { 
Memory test =  new  Memory();
test.n=true; // без проблем
// сначала выделим память
test.mem =  new   boolean [ 2 ];
//далее присвоим значения
test.mem[ 0 ] = true;
test.mem[ 1 ] = false;
}
// В случае если массив большой то можно создать константу
// которую в последствии присваивать переменной
 public   class  Memory
{
// Инициализацию можно сделать только при объявлении переменной
 public   static   final   boolean [] INIT_ARRAY = { true, false};
 boolean [] mem ;
 boolean  n;
}

 public   class  Test
{
 public   static   void  main (String [] args) { 
Memory test =  new  Memory();
test.n=true; // без проблем
// сначала выделим память
test.mem = INIT_ARRAY;
}
...
Рейтинг: 0 / 0
05.11.2005, 12:07
    #33362426
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если поле класса это массив, как инициализировать
test.mem [] ={ true, false} ; // не проходит, выдает ошибку not a statement

Код: plaintext
1.
 test.mem =  new   boolean [] {true, false}
...
Рейтинг: 0 / 0
05.11.2005, 23:12
    #33362706
Olga1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если поле класса это массив, как инициализировать
Большое всем спасибо за совет!!!!!!!
Будем пробовать!!!
Как здорово, что есть этот форум !!!!
...
Рейтинг: 0 / 0
07.11.2005, 13:55
    #33364056
peter6636
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если поле класса это массив, как инициализировать
Кстати в "Ошибки начинающих Java программистов" описана такая ситуация,читайте:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
 3 . Забыл проинициализировать объекты, являющиеся элементами массива.

В Java массив объектов - это на самом деле массив ссылок на объекты. Создание
массива - это просто создание набора ссылок, ни на что не указывающих (то 
есть равных  null ). Чтобы на самом деле создать "полноценный" массив 
объектов, необходимо проинициализировать каждый элемент массива. Многие 
студенты не понимают этого; они считают, что, создавая массив объектов, они 
автоматически создают сами объекты. (В большинстве случаев, студенты 
приносят эту концепцию из C++, где создание массива объектов приводит к 
созданию самих объектов путем вызова их конструктора по умолчанию).

В примере ниже, студент хочет создать  3  объекта класса StringBuffer. Код 
будет откомпилирован без ошибок, но в последней строке произойдет 
исключение NullPointerException, где происходит обращение к несуществующему 
объекту.

Ошибочный пример:
// Создаем массив из StringBuffer
StringBuffer [] myTempBuffers;
myTempBuffers =  new  StringBuffer[ 3 ];
myTempBuffers[ 0 ].add(data);

 

Чтобы не допускать эту ошибку, необходимо не забывать проинициализировать 
элементы массива.

Исправленный пример:
// Создаем массив из StringBuffer и инициализируем элементы
StringBuffer [] myTempBuffers;
myTempBuffers =  new  StringBuffer[ 3 ];
 for  ( int  ix =  0 ; ix < myTempBuffers.length; ix++) 
     myTempBuffers[ix] =  new  StringBuffer();

myTempBuffers[ 0 ].add(data);

 

...
Рейтинг: 0 / 0
08.11.2005, 11:02
    #33365828
j2me
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если поле класса это массив, как инициализировать
авторЗабыл проинициализировать объекты, являющиеся элементами массива.
В вопросе булеан вроде а не объекты.

Инициализировать можно и не при создании массива, а потом... типа

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 public   class  Memory
{
     boolean  mem [];
     boolean  n;
   Memory()
   {
       mem =  new   boolean [ 2 ];
   }
}

 public   class  Test
{
  public   static   void  main (String [] args)  { 
    Memory test =  new  Memory();
    test.n=true; // без проблем
     for  ( int  i= 0 ;i<test.mem.lenght;i++) test.mem[i]=true;
}
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Если поле класса это массив, как инициализировать / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]