Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/50: Рейтинг темы: голосов - 50, средняя оценка - 4.72
2 / 2 / 0
Регистрация: 05.03.2013
Сообщений: 49

Массив из разных типов данных

03.04.2013, 11:03. Показов 10756. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет !

Помогите с таким вопросом:
Возникла необходимость создать массив из записей с разными типами полей.

Я попробовал сделать так:
создал класс с нужными полями и сделать массив этого класса
Java
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
39
40
package myproject;
 
public class myParams {
    public String name = "";
    public double d = 0;
    public int i = 0;
    public Color c = Color.decode("#F0F0F0");
    public boolean isSelected = false;
    public boolean isCreated = false;
}
 
// далее пытаюсь сделать массив с использованием этого класса примерно так:
 
..............
..............
..............
    myproject.myParams[][] mPall = new myproject.myParams[5][5];
    myproject.myParams mP = new myproject.myParams;
    for(int i=0; i<5; i++) {
        for(int j=0; j<5; j++) {
            mp.name = "";
            mp.d = 0;
            mp.i = 0;
            ..............
            ..............
            mPall[i][j] = mp;
        }
    } 
.............
.............
.............
 
// Далее пытаюсь работать с этим массивом типа так:
...........
...........
    mPall[2][3].i = 3;
// а затем к примеру сразу так:
    int y = mPall[1][1].i;
    System.out.println(y);
// по идее должно отпнчатать 0, а печатает 3
Что не так я делаю?

Добавлено через 16 минут
поправлю ошибочку, торопился, про регистры забыл как всегда
но смысл не поменялся
Java
1
2
3
4
5
6
7
8
9
10
    for(int i=0; i<5; i++) {
        for(int j=0; j<5; j++) {
            mP.name = "";
            mP.d = 0;
            mP.i = 0;
            ..............
            ..............
            mPall[i][j] = mP;
        }
    }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.04.2013, 11:03
Ответы с готовыми решениями:

Получение разных типов данных
Суть задачи такова: в функцию передаётся неизвестное кол-во переменных разного типа(а именно: строка, символ, Boolean переменная, целое...

Записать в текстовый файл массив обьектов с полями разных типов
Записать в текстовый файл массив обьектов с полями разных типов, и потом считать из файла данные и записать в массив по типу идентичному из...

Чтение и запись типов, массив типов и List<> данных в файл
Здравствуйте Подскажите способ записи и чтения любых типов данных (не компонентов) Например это: string в котором текст может быть...

4
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
03.04.2013, 13:25
Java это язык со строгой типизацией, не надо делать то что Вы собираетесь
0
2 / 2 / 0
Регистрация: 05.03.2013
Сообщений: 49
03.04.2013, 13:59  [ТС]
А что я такого делаю что нарушает "строгую типизацию" ?
Насколько я понял java легко позволяет делать массивы из классов. В своём классе я чётко указал типы данных, к которым и обращаюсь как к таковым. Чем этот класс принципиально отличается от класса String например?

Мало того, оно ведь работает, только неправильно как то!
Просто есть ощущение что массив как бы просто "неразвернулся" чтоли, не знаю как правильно сказать, и я несмотря на то что задаю индексы, всегда получаю один и тот же экземпляр своего класса, а не конкретную его копию из массива по по его индексному адресу mPall[i][j]
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
03.04.2013, 14:52
у вас всё неправильно, с самого начала
1. имя класса не по стандарту
2. отсутствие конструкторов и аксессоров в классе
3. в цикле присваивается всё время один и тот же объект

вобщем нарушив все принципы разработки, не стоит удивляться странным результатам
1
2 / 2 / 0
Регистрация: 05.03.2013
Сообщений: 49
03.04.2013, 15:56  [ТС]
Цитата Сообщение от mutagen Посмотреть сообщение
3. в цикле присваивается всё время один и тот же объект
Да, это действительно я чёта не доглядел, это ключевая ошибка спасибочки за подсказку!
Класс переименовал, с большой буковки теперь
А остальное для моей задачи помоему лишнее.

В таком виде всё работает:
Java
1
2
3
4
5
6
7
8
9
10
11
12
    myproject.MyParams[][] mPall = new myproject.MyParams[5][5];
    for(int i=0; i<5; i++) {
        for(int j=0; j<5; j++) {
            myproject.MyParams mP = new myproject.MyParams;
            mP.name = "";
            mP.d = 0;
            mP.i = 0;
            ..............
            ..............
            mPall[i][j] = mP;
        }
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.04.2013, 15:56
Помогаю со студенческими работами здесь

Массив разных типов
Подскажите пожалуйста!Ситуация следующая: Есть масив с числами int arr_id; Есть масив с строками: string str_answers; Мне нужно...

Массив переменных разных типов
Здравствуйте! Нужно решить следующую задачу: создать массив с одним столбцом из - текстовых переменных и вторым - из чисел, лежащих в...

Массив из разных типов элементов
Мне нужно создать двумерный массив. Так что бы в 1 строке были символы, а во второй строке числа типа real. Добавлено через 4 часа 38...

Массив списков разных типов
Добрый день. Подскажите пожалуйста как можно задать массив списков разных типов. То есть, что то типа такого (только это не работает): ...

Запись данных разных типов
Здравствуйте! Столкнулся вот с такой дилеммой, не принципиально, но все же: есть форма ввода информации, подразумевающая поле с типом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru