|
Java форум JavaTalks форум программистов
|
|
|
|
| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
мсье клоц : 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, эх, а почему не заставить человека подтолкнуть к думанию что он пишет?  |
|
|
|
 |
Vantuz-Subhuman : 660 Постоянный посетитель Откуда: издиснейленда
|
Фев 04, 2012 9:37 |
|
|
| Skynin писал(а): |
Vantuz-Subhuman, эх, а почему не заставить человека подтолкнуть к думанию что он пишет?  |
Не, по моему этап, на котором человек пишет "vector.typefield.add(2)" рановат для этого. Вот когда он будет способен понять смысл написанного и логику работы, тогда можно будет подгонять тонкими намёками. _________________ «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)" рановат для этого.  |
Наверное что ваша правда.
Просто так уверенно человек говорил что у него на С++ есть аналогичный код...
Что ж, ответ вы дали, будем надеяться что человек им воспользуется. |
|
|
|
 |
kadet89 : 19 Новичок
|
Фев 04, 2012 15:09 |
|
|
| Skynin писал(а): |
| Vantuz-Subhuman писал(а): |
Не, по моему этап, на котором человек пишет "vector.typefield.add(2)" рановат для этого.  |
Наверное что ваша правда.
Просто так уверенно человек говорил что у него на С++ есть аналогичный код... |
Сколько раз можно писать что на с++ у меня код не аналогичный? Для тупых пишу 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 писал(а): |
| Если вы не знаете что такое структуры в языке си то чё вы тут хрень всякую пишете? |
Это где ж я хрень то нес
Просветите ка
Как раз ваши муки и говорят что вы не поняли что такое struct в Си. И родство с class.
| kadet89 писал(а): |
| Если вы хотите чтоб я вам помог это узнать как подобное я реализовал на C |
Надцать раз я это реализовывал на Си в свое время. Ничего секретного в реализации вектора указателей для меня нет.
А вот чтобы не врубиться что такое классы, на первых порах - не помню. Когда столкнулся с С++ в первый раз - помню как меня сишника быстренько ввели в азы программирования в ООП стиле. Потом оказалось что все интересней и сложней. Но то было потом.
| kadet89 писал(а): |
| - идите куда подальше, я вам ни в жизни помогу. Разбирайтесь сами, как это делал я. |
Во-первых я у вас помощи и не спрашивал. Это у вас элементращина на Java вызвала глубокий ступор. И "знание" Си почему то никак не помогло.
Во-вторых - если вы можете разбираться сами - то нечего писать на форумах.
| kadet89 писал(а): |
| С таким отношениям к людям вам вообще никто не поможет. |
Да вы что? Как же я жил то до этого
| 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 |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|