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

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

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

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

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

Я попробовал сделать так:
создал класс с нужными полями и сделать массив этого класса
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.04.2013, 11:03
Ответы с готовыми решениями:

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

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

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

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

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

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

вобщем нарушив все принципы разработки, не стоит удивляться странным результатам
1
2 / 2 / 0
Регистрация: 05.03.2013
Сообщений: 49
03.04.2013, 15:56  [ТС] 5
Цитата Сообщение от 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
03.04.2013, 15:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.04.2013, 15:56
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru