Обычная версия
Java форум JavaTalks
форум программистов

Поиск   Пользователи   Группы   Регистрация 
 Профиль   Личные сообщения 

 Вход 

Вектор структур
Список форумов
 ->  Основы языка Java


На страницу 1, 2  След. 
Начать новую тему 
Предыдущая тема :: Следующая тема  
Автор Сообщение
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 
Ответить с цитатой
Здесь можно поглядеть объявление, инициализацию и другие операции с массивами и прочее:
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html

Здесь можно поглядеть интерфейс вектора:
http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Vector.html
К началу Посмотреть профиль Отправить личное сообщение
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? что вы делаете вызов:
Код:
v.number
v.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


 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Java and all Java-related trademarks and logos are trademarks or registered trademarks of Oracle Corporation in the United States and other countries.
Это сайт не относится к фирме Oracle Corporation и не поддерживается ею.

© 2006-2010 www.javatalks.ru: форум java программистов
Используется скрипт phpBB © 2001, 2010 phpBB Group

Хостинг от bizname.ru