|
Java форум JavaTalks форум программистов
|
|
|
|
| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
kadet89 : 19 Новичок
|
Фев 03, 2012 22:49 |
|
|
Нужно сделать вектор структур на подобии вектора структур в с++
Вот что сделал, но не работает...много ошибок, вообще не имею представления как на java это делается
| Код: |
class Struct
{
int number;
char symb;
}
//Struct struct = new Struct();
Struct sch = {0,0,0,0,0,0};
sch.number = 0;
Vector<sch> v = new Vector<sch>();
v.number.add(1);
v.number.add(3);
v.symb.add(8);
v.number = 2; |
Гугла молчит. Помогите пожалуйста кто с подобной проблемой сталкивался. |
|
|
|
 |
мсье клоц : 562 Постоянный посетитель
|
Фев 03, 2012 22:55 |
|
|
|
|
|
|
 |
kadet89 : 19 Новичок
|
Фев 03, 2012 23:00 |
|
|
Да, я это уже смотрел и оно вообще не помогает. Простой вектор понятно как делать, а мне нужно именно аналогия вектора структур. Мнеб хватило простого пример реализации ну или сказать где у меня ошибки.
Всё специализируется, но при обращении к v.number вылазит ошибка error: <identifier> expected, не могу понять смысл, вроде всё верно и логично сделано.
Последний раз редактировалось: kadet89 (Фев 03, 2012 23:05), всего редактировалось 1 раз |
|
|
|
 |
мсье клоц : 562 Постоянный посетитель
|
Фев 03, 2012 23:04 |
|
|
Хорошо, давайте начнём издалека.
Что Вы имеете ввиду, указывая v.number.add(), v.symb.add() и v.number = 2, и какие различия между первой и третьей штуковиной? |
|
|
|
 |
kadet89 : 19 Новичок
|
Фев 03, 2012 23:06 |
|
|
Это я пробовал разные вариант, мне нужно поместить значение 3 или 2, это не имеет значения. Просто нужно понять как это делать. Примеров нет, вот и приходится гадать...
По логике метод add добавляет к концу вектора элемент, т.е. в 0 у меня будет 1, в 1 будет 3, но на практике не срабатывает.
Возможно в Java есть другие способы реализации вектора с разными типами данных? Мне нужен вектор с чарами и интеджерами. |
|
|
|
 |
мсье клоц : 562 Постоянный посетитель
|
Фев 03, 2012 23:33 |
|
|
Зачем Вы написали класс Struct, чтобы использовать его, как структуру данных? Вот и используйте его по назначению.
Должен извиниться, я дал Вам ссылку на старую API. Здесь можно получить более четкое представление: http://docs.oracle.com/javase/6/docs/api/java/util/Vector.html
Вместо <E> подставьте свой тип данных (Struct), тогда получится вектор, содержащий в себе n объектов (разумеется, после их добавления) типа Struct. Ей Богу, к чему два разных вектора, если ни один из них не соответствует требованиям?
Последний раз редактировалось: мсье клоц (Фев 03, 2012 23:43), всего редактировалось 2 раз(а) |
|
|
|
 |
kadet89 : 19 Новичок
|
Фев 03, 2012 23:42 |
|
|
Ссылка дохлая...
Т.е. надо так сделать Vector<Struct> v = new Vector<Struct>(); ?
И как тогда обращаться к элементам вектора? мнеб примерчик на основе вышеизложенного кода, если можно.
Не понятно, для чего было так усложнять..моглиб просто взять по примеру ис c++ ну или хотяб просто по правилам логики, не первый раз уже с подобной проблемой сталкиваюсь. |
|
|
|
 |
мсье клоц : 562 Постоянный посетитель
|
Фев 03, 2012 23:46 |
|
|
Да, именно так.
Примерчик и обращения содержатся в API, находящемся по указанной ссылке (которую я поправил), однако если она всё равно не будет работать, можно воспользоваться старой - различий там минимум. |
|
|
|
 |
kadet89 : 19 Новичок
|
Фев 03, 2012 23:57 |
|
|
add(E e)
E - у меня Struct
e - элемент, допустим number
v.add(Struct number) = 1; //Смотрется нелепо да и не работает
v.add(Struct, number) = 1; //Так тоже не хочет
Если e подразумевается какое число я хочу записать, то получается так:
v.add(Searchtab 1); //Но это опять же не работает, да и тут не указывается что я заношу значение именно в number |
|
|
|
 |
мсье клоц : 562 Постоянный посетитель
|
Фев 04, 2012 0:21 |
|
|
| В самом первом посте Вы упомянули c++, скажите, к чему это было написано? |
|
|
|
 |
kadet89 : 19 Новичок
|
Фев 04, 2012 0:38 |
|
|
Разве это может помочь мне решить проблему? Мне нужно всего то узнать как добавлять элемент. Если вам это известно, скажите пожалуйста, я уже целый день мучаюсь.
А ответ на ваш вопрос и изложен в первой строчке первого поста.
Мне нужен вектор с элементами разных типов данных. в C++ это делается именно так.
Как я понял на этом форуме мне помочь не могут? |
|
|
|
 |
мсье клоц : 562 Постоянный посетитель
|
Фев 04, 2012 0:49 |
|
|
| kadet89 писал(а): |
Мне нужен вектор с элементами разных типов данных. в C++ это делается именно так. |
Если честно, есть сомнения, что в c++ это дается так:
| kadet89 писал(а): |
v.add(Struct number) = 1;
v.add(Struct, number) = 1; |
Если Вам нужно готовое решение, советую дождаться утра, если же оно необходимо как можно скорее, то я привел ссылку на основы языка, где можно найти ответ на любой из заданных вопросов. |
|
|
|
 |
kadet89 : 19 Новичок
|
Фев 04, 2012 0:59 |
|
|
| Вы не правильно поняли первый пост, я там указал именно на слово структура. В си это делается через структуру, а вот эти строчки это уже мои попытки реализации на джаве, к с++ не имеют отношения Там немного иначе |
|
|
|
 |
Skynin : 656 Постоянный посетитель
|
Фев 04, 2012 1:41 |
|
|
А приведите ка код на С++. Работающий.
Потому что очень непонятно, как из работающего кода на С++ вы получили:
1.
| Код: |
Struct sch = {0,0,0,0,0,0};
Vector<sch> v = new Vector<sch>(); |
Что в С++ в template у vector нужно ставить, имя ТИПА или имя ПЕРЕМЕННОЙ?
А что вы поставили?
2.
У вектора в С++ коде есть поле number? symb? что вы делаете вызов:
3.
у полей структуры в С++ есть методы add, что вы пытаетесь вызвать:
| Код: |
number.add(1);
symb.add(8); |
|
|
|
|
 |
kadet89 : 19 Новичок
|
Фев 04, 2012 3:21 |
|
|
Skynin, на один пост выше я уже ответил на этот вопрос, да и в первом посте чётко написано. Вот какой смысл поднимать этот вопрос про с++ 2 раза если ответ уже четко дан 2 раза? Еслиб вопрос был про с++ или php или sourcepawn то яб не задавал здесь вопрос ибо там спецефикация адекватная и подобных вопросов впринципе быть не может.
То, что чуть выше - мне подобные ответы вообще не нужны, вот как по вашему я должен из этого сделать рабочий код?
Вопрос был конкретный, а ваши замечания меня вообще не интересуют и прошу оставить их при себе. Не можете помочь - проходите мимо.
Просил помочь с одной строчкой а развернули балаган.
Код про с++ приводить не буду, если надо - ищите сами. Еслиб то, что я написал на c++ работало на java, яб тут не задавал такие вопросы.
| Код: |
class StructX {
int a;
double[] b;
}
class AnotherClass {
StructX x;
void method() {
x = new StructX();
x.a = 5;
x.b = new double[x.a];
for (int i = 0; i < x.b.length; i++) {
x.b[i] = i * 2.0;
}
double sum = 0.0;
for (int i = 0; i < x.b.length; i++) {
sum += x.b[i];
}
System.out.println(sum);
}
} |
Что вы скажете на счет этого кода? он ведь работает! И вызов тут идет именно так x.a. И мысля логически, еслиб x был вектором, то я так к нему и обращался бы. |
|
|
|
 |
|
|
Страница 1 из 2 На страницу 1, 2 След. |
Список форумов
-> Основы языка Java |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|