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

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

 Вход 

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


На страницу Пред.  1, 2 
Начать новую тему 
Предыдущая тема :: Следующая тема  
Автор Сообщение
мсье клоц : 562
Постоянный посетитель

СообщениеФев 04, 2012 4:13 
Ответить с цитатой
kadet89 писал(а):
Что вы скажете на счет этого кода? он ведь работает! И вызов тут идет именно так x.a. И мысля логически, еслиб x был вектором, то я так к нему и обращался бы.
Первое, что приходит на ум: Вам известно понятие абстракция данных, что, по-вашему, означает abstract data type?
К началу Посмотреть профиль Отправить личное сообщение
Skynin : 656
Постоянный посетитель

СообщениеФев 04, 2012 8:46 
Ответить с цитатой
kadet89 писал(а):
Skynin, на один пост выше я уже ответил на этот вопрос, да и в первом посте чётко написано.

Читал. Просто у меня сложилось мнение что вы не понимаете что и на С++ у вас написано.

kadet89 писал(а):
Вот какой смысл поднимать этот вопрос про с++ 2 раза если ответ уже четко дан 2 раза?

Потому что не четко и ни разу. Извините у вас в голове пока каша, что и видно с ваших "объяснений". Вы пока сами не поняли что хотите написать на любом языке программирования.

kadet89 писал(а):
Вопрос был конкретный, а ваши замечания меня вообще не интересуют и прошу оставить их при себе.

Вопрос был ни о чем, а замечания я сам решаю - когда давать, а когда нет.

kadet89 писал(а):
Не можете помочь - проходите мимо.

Не можете сформулировать вопрос - так не пишите на форумах.

Итак:

Код:
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);
  }
}
Что вы скажете на счет этого кода?

Скажу что никакой связи с алгоритмом который вы привели выше он не имеет.
Хотя бы потому что в нем vector'ов структур.

И вызов тут идет именно так x.a. -- дружочек, вот как ты думаешь, это у меня проблемы с программированием, почти 20 лет уж как им зарабатываю, или у тебя, что ты меня берешься уличать?
Так вот вопрос 4ре:
Неужели не видно принципиальной разницы между:
Код:

class StructX {
  int a;
  double[] b;
}
...
x.a = 2;

и
Код:

class StructX {
  int a;
  double[] b;
}
...
StructX x = new StructX();
x.a = 2;
Vector<x> v = new Vector<x>();
v.a.add(1);
К началу Посмотреть профиль Отправить личное сообщение
Vantuz-Subhuman : 660
Постоянный посетитель
Откуда: издиснейленда

СообщениеФев 04, 2012 9:00 
Ответить с цитатой
Может конечно я ломаю какой-то мега-троллинг на 2 страницы... не допёр.

kadet89 писал(а):
add(E e)
E - у меня Struct
e - элемент, допустим number

v.add(Struct number) = 1; //Смотрется нелепо да и не работает
v.add(Struct, number) = 1; //Так тоже не хочет
Если e подразумевается какое число я хочу записать, то получается так:
v.add(Searchtab 1); //Но это опять же не работает, да и тут не указывается что я заношу значение именно в number


add(E e) означает "добавить элемент 'e' типа 'E'", тип не нужно указывать в самом методе.

Код:
// Создаём вектор для работы с объектами String
// теперь метод add будет выглядеть так: add(String e)
Vector<String> v = new Vector<String>();

// Создаём строку
// У неё уже есть тип String, указанный при создании
// Вы можете втыкать её в любые методы, ожидающие String
String s = "text";

// Добавляем строку "text" в конец вектора
v.add(s);

// Добавляем строку "more text" в конец вектора
// Здесь никто не ругается, т.к. тип String это тип по-умолчанию
// и он совпадает с типом вектора
v.add("more text");

/*
 * У любой строки есть метод "length()", возвращающий длину.
 * Чтобы обратиться к строке из вектора, нужно сперва получить саму
 * строку, а потом обращаться к ней.
 * У вас не получиться написать v.length(), т.к. у объекта-вектора(!)
 * нет такого метода, и он не стианет угадывать, что его нужно применить
 * к какой-то из строк.
 */

// Получаем строку из вектора
String str = v.get(0);

// Обращаемся к строке
int strlen = str.length();

// Или напрямую
int str2len = v.get(1).length();


kadet89 писал(а):
Код:
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 был вектором, то я так к нему и обращался бы.


Вы обращаетесь "x.a" и это нормально, т.к. у объекта "x тип StructX" есть поле "a", которые вы сами объявили. У объекта "v тип Vector" такого поля нет. У него есть множество своих полей и методов.
Вы можете создать вектор. Вы можете сказать вектору, что он рассчитан на работу с определённым типом. Вы можете положить в вектор объекты этого типа. Вы можете достать из вектора объекты, которые вы в него предварительно положили. Ну и ещё множество всякого. Читайте про коллекции. Но вектор это обычный объект, с которым нужно работать через его методы.
_________________
«One should never underestimate the predictability of stupidity»,
«Never attribute to malice that which can be adequately explained by stupidity»
К началу Посмотреть профиль Отправить личное сообщение
Skynin : 656
Постоянный посетитель

СообщениеФев 04, 2012 9:28 
Ответить с цитатой
Vantuz-Subhuman, эх, а почему не заставить человека подтолкнуть к думанию что он пишет? Wink
К началу Посмотреть профиль Отправить личное сообщение
Vantuz-Subhuman : 660
Постоянный посетитель
Откуда: издиснейленда

СообщениеФев 04, 2012 9:37 
Ответить с цитатой
Skynin писал(а):
Vantuz-Subhuman, эх, а почему не заставить человека подтолкнуть к думанию что он пишет? Wink


Не, по моему этап, на котором человек пишет "vector.typefield.add(2)" рановат для этого. Smile Вот когда он будет способен понять смысл написанного и логику работы, тогда можно будет подгонять тонкими намёками.
_________________
«One should never underestimate the predictability of stupidity»,
«Never attribute to malice that which can be adequately explained by stupidity»
К началу Посмотреть профиль Отправить личное сообщение
Skynin : 656
Постоянный посетитель

СообщениеФев 04, 2012 9:44 
Ответить с цитатой
Vantuz-Subhuman писал(а):

Не, по моему этап, на котором человек пишет "vector.typefield.add(2)" рановат для этого. Smile

Наверное что ваша правда.
Просто так уверенно человек говорил что у него на С++ есть аналогичный код...
Что ж, ответ вы дали, будем надеяться что человек им воспользуется.
К началу Посмотреть профиль Отправить личное сообщение
kadet89 : 19
Новичок

СообщениеФев 04, 2012 15:09 
Ответить с цитатой
Skynin писал(а):
Vantuz-Subhuman писал(а):

Не, по моему этап, на котором человек пишет "vector.typefield.add(2)" рановат для этого. Smile

Наверное что ваша правда.
Просто так уверенно человек говорил что у него на С++ есть аналогичный код...

Сколько раз можно писать что на с++ у меня код не аналогичный? Для тупых пишу 3-ий раз - НА С КОД У МЕНЯ ДРУГОЙ, ТАМ СДЕЛАНО ЧЕРЕЗ СТРУКТУРЫ. Вам бы читать сперва надо научиться раз простые слова понять не можете.

Спецификация у явы ни к чёрту. Много программировал но такого безобразия не встречал.
К началу Посмотреть профиль Отправить личное сообщение
Vantuz-Subhuman : 660
Постоянный посетитель
Откуда: издиснейленда

СообщениеФев 04, 2012 15:25 
Ответить с цитатой
kadet89 писал(а):
Спецификация у явы ни к чёрту. Много программировал но такого безобразия не встречал.


Примеры в студию.
_________________
«One should never underestimate the predictability of stupidity»,
«Never attribute to malice that which can be adequately explained by stupidity»
К началу Посмотреть профиль Отправить личное сообщение
Skynin : 656
Постоянный посетитель

СообщениеФев 04, 2012 16:02 
Ответить с цитатой
kadet89 писал(а):
Для тупых пишу 3-ий раз - НА С КОД У МЕНЯ ДРУГОЙ, ТАМ СДЕЛАНО ЧЕРЕЗ СТРУКТУРЫ. Вам бы читать сперва надо научиться раз простые слова понять не можете.

Так приведите его, этот код.
Чтобы понять - отчего безграмотно то так пытаетесь обращаться к полям структур, классов и методам объектов.

Что же до ваших простых слов, то в них вся кривизна и поверхность знаний видна. Вы не владеете элементарными понятиями которые не зависят от языка программирования, а пытаетесь нечто изобрести свое.
Если бы акустически, то это как бы вы рот жвачкой набили до отказа, и пытались что-то членораздельное сказать. Но вы претендуете еще и на оперную арию, "у меня на С++".

kadet89 писал(а):
Спецификация у явы ни к чёрту. Много программировал но такого безобразия не встречал.

Ну разумеется, когда кроме гонору ничего нет, то и спецификация что годами огромным числом программистов читалась, и авторами принимались замечания ни к чёрту. А вот пришел грамотный и проник в суть.

kadet89 писал(а):
Много программировал но такого безобразия не встречал.

Мой первый язык программирования был Си. И профессиональный - тоже он.
На чем вы много программировали чтобы можно было опереться давая вам ответ? На Си? Так проще некуда:
С++, Java для переходящего с Си это ЯП где на уровне синтаксиса в структурах существуют поля - указатели на функцию. Эти структуры называются классами, а указатели на функции - методами. Изменить эти указатели во время выполнения нельзя. Так же, первым параметром эта функция принимает ссылку на эту структуру, просто этот параметр не нужно объявлять. Он называется ссылкой на объект (экземпляр класса).

Код на Си приведите, если не в состоянии ответить на элементарные вопросы, как это вы И в Си обращались к несуществующим в структуре полям и вызывали функции по указателю, имени которого нет в структуре.
А обижаться на "безобразие" нужно в первую очередь в собственной голове. Потому что там оно чаще встречается, чем в документации которой пользуются годами миллионы.
К началу Посмотреть профиль Отправить личное сообщение
kadet89 : 19
Новичок

СообщениеФев 04, 2012 18:07 
Ответить с цитатой
Skynin, Если вы не знаете что такое структуры в языке си то чё вы тут хрень всякую пишете? Не похоже что си ваш профессиональный язык. Если вы хотите чтоб я вам помог это узнать как подобное я реализовал на с - идите куда подальше, я вам ни в жизни помогу. Разбирайтесь сами, как это делал я. С таким отношениям к людям вам вообще никто не поможет. Взрослый человек, а ведете себя как школьник.
К началу Посмотреть профиль Отправить личное сообщение
Skynin : 656
Постоянный посетитель

СообщениеФев 04, 2012 20:06 
Ответить с цитатой
kadet89 писал(а):
Если вы не знаете что такое структуры в языке си то чё вы тут хрень всякую пишете?

Это где ж я хрень то нес Smile
Просветите ка Very Happy
Как раз ваши муки и говорят что вы не поняли что такое struct в Си. И родство с class.

kadet89 писал(а):
Если вы хотите чтоб я вам помог это узнать как подобное я реализовал на C

Надцать раз я это реализовывал на Си в свое время. Ничего секретного в реализации вектора указателей для меня нет.
А вот чтобы не врубиться что такое классы, на первых порах - не помню. Когда столкнулся с С++ в первый раз - помню как меня сишника быстренько ввели в азы программирования в ООП стиле. Потом оказалось что все интересней и сложней. Но то было потом.

kadet89 писал(а):
- идите куда подальше, я вам ни в жизни помогу. Разбирайтесь сами, как это делал я.

Во-первых я у вас помощи и не спрашивал. Это у вас элементращина на Java вызвала глубокий ступор. И "знание" Си почему то никак не помогло.
Во-вторых - если вы можете разбираться сами - то нечего писать на форумах.

kadet89 писал(а):
С таким отношениям к людям вам вообще никто не поможет.

Да вы что? Very Happy Как же я жил то до этого Very Happy

kadet89 писал(а):
Взрослый человек, а ведете себя как школьник.

Всего лишь намекаю школьнику, что ежели ты невежда - то незачем гонор свой показывать. Он никому не нужен, и забавно - что тебе самому тоже. То не так его поняли, то видите ли ему такому ценному спецификацию языка не так написали.
К началу Посмотреть профиль Отправить личное сообщение
Skipy : 4805
Я тут живу!
Откуда: Москва, Россия

СообщениеФев 06, 2012 10:46 
Ответить с цитатой
kadet89 писал(а):
Сколько раз можно писать что на с++ у меня код не аналогичный? Для тупых пишу 3-ий раз - НА С КОД У МЕНЯ ДРУГОЙ, ТАМ СДЕЛАНО ЧЕРЕЗ СТРУКТУРЫ. Вам бы читать сперва надо научиться раз простые слова понять не можете.


Молодой человек, а Вам не кажется, что Вы, мягко говоря, чересчур хамоваты для человека, которому нужна помощь? Объясняю на пальцах - это ВАМ надо, а не нам. Вы сейчас общаетесь с людьми, которые на java-программировании съели по пять собак каждый, не можете внятно сформулировать, чего хотите, а в ответ на наводящие вопросы хамите. Вы какого результата ожидаете? Если тут все тупые, а Вы один умный - решайте свои проблемы сами! Видит Бог, нам есть, чем заняться.
_________________
С уважением,
Евгений aka Skipy
www.skipy.ru
P.S. Я НЕ решаю задачи ЗА других!
К началу Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Skipy : 4805
Я тут живу!
Откуда: Москва, Россия

СообщениеФев 06, 2012 10:52 
Ответить с цитатой
kadet89 писал(а):
[Если вы хотите чтоб я вам помог это узнать как подобное я реализовал на с - идите куда подальше, я вам ни в жизни помогу. Разбирайтесь сами, как это делал я. С таким отношениям к людям вам вообще никто не поможет.


Коллеги, участвующие в этом обсуждении - Skynin, Vantuz-Subhuman, мсье клоц! Настоятельно предлагаю оставить товарищу возможность самому разобраться, "как это делали вы". А если он хочет, чтобы ему помогли разобраться, как это реализовать на Java - поступать ровно с соответствии с озвученной им самим позицией.

Впрочем, решать вам. Лично я очень не люблю хамства.

_________________
С уважением,
Евгений aka Skipy
www.skipy.ru
P.S. Я НЕ решаю задачи ЗА других!
К началу Посмотреть профиль Отправить личное сообщение Посетить сайт автора
 
Начать новую тему  Ответить на тему
Страница 2 из 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