Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массив как объект 
:(
    Опции темы
Vilux
Дата 7.4.2006, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 26.9.2005

Репутация: нет
Всего: нет



У меня следующая проблема. Я конвертирую int[][] a в Object, так вот как мне потом узнать размерность массива и получить доступ к его элементам? Заранее спасибо
PM MAIL   Вверх
powerOn
Дата 7.4.2006, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: нет
Всего: 159



Может быть так:
Код

        int i[][] = new int[10][10];
        i[1][1] = 1234;
        Object o = i;
        int i1 [] [] = (int [][]) o;
        //System.out.println("" + i1[1][1]);



--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
Vilux
Дата 7.4.2006, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 26.9.2005

Репутация: нет
Всего: нет



Так, конечно, сработает. Но мне надо универсальный метод, когда я не знаю размерность массива. А в вашем коде сразу известно, что массив двухмерный.
В Java это реализуется с помощью методов Array, а тут похоже нет smile
PM MAIL   Вверх
javastic
Дата 10.4.2006, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



Может быть можно что-то сделать с такой конструкцией:

Код

Object array(int[] a) {
  return (Object)a;
}

Object array(int[][] a) {
  return (Object)a;
}





--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
Vilux
Дата 10.4.2006, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 26.9.2005

Репутация: нет
Всего: нет



Ну я же написал, что надо универсальный метод, а если массив размерностью 100?

Это сообщение отредактировал(а) Vilux - 10.4.2006, 11:02
PM MAIL   Вверх
javastic
Дата 10.4.2006, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



Попробуй описать задачу, может так будет понятней что ты хочешь.


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
redrick
Дата 10.4.2006, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 547
Регистрация: 7.1.2004
Где: Москва

Репутация: 1
Всего: 5



может попробовать перебором? Типа:

Код

boolean found = false;
try{
    int[] a = (int[])o;
    found = true;
} catch(Exception ex) {
   found = false;
}

try{
    int[][] a = (int[][])o;
    found = true;
} catch(Exception ex) {
   found = false;
}
...



--------------------
Имею Мнение Хрен Оспоришь   
PM MAIL ICQ   Вверх
LSD
Дата 10.4.2006, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 1
Всего: 538



Цитата(Vilux @ 10.4.2006, 12:01 Найти цитируемый пост)
Ну я же написал, что надо универсальный метод, а если массив размерностью 100?

Работать с массивом произвольной размерности, можно только через рефлексию. Если ее в J2ME нет, то ничего тут не сделаешь.
А получить размернось массива можно так:
Код
public static int getDimensions(Object obj)
{
  int dim = 0;
  Class clazz = obj.getClass();
  while(clazz.isArray())
  {
    dim++;
    clazz = clazz.getComponentType();
  }
  return dim;
}



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Dancer
Дата 10.4.2006, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

Репутация: 33
Всего: 37



smile всё бы хорошо, но нету в J2ME getComponentType()
Добавлено @ 16:40
Оборачивай всё это дело в свой собтвенный класс, в котором будешь объявлять размерность массива и создавать этот массив для последующей работы с ним.
Другого варианта пока не вижу.


--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.1187 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.