Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Целочисленное деление, помогите извернутся 
:(
    Опции темы
TyVik
Дата 9.11.2005, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 1.10.2005

Репутация: нет
Всего: нет



в теле программы очень часто использую getHeight()/3. Как я понимаю, результат не целочисленный, но drawLine его кушает и не давится... как бы мне его в константу записать?
Объявил byte - говорит низзя, integer - аналогично smile
PM MAIL   Вверх
sergejzr
Дата 9.11.2005, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: нет
Всего: 360



Код

int const_value=(int)getHeight()/3;



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
TyVik
Дата 9.11.2005, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 1.10.2005

Репутация: нет
Всего: нет



Круто, работает...
Только как/то криво - только для 1 эмулятора работает правильно :/

PM MAIL   Вверх
batigoal
Дата 9.11.2005, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 1
Всего: 151



Любые округления при рисовании могут закончится очень плачевно, особенно когда они участвуют в инкременте. Поэтому я бы рекомендовал хранить константу типа double, а приведение типа выполнять только тогда, когда оно действительно нужно (например, уже при рисовании).


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Dancer
Дата 10.11.2005, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

Репутация: 33
Всего: 37



ага, а некоторые девайсы не поддерживают CLDC 1.1 и ни про какой там float и double вообще не знают smile.
впринципе делай так как тебе это sergej.z сказал.
Я только не понял, что ты имеешь ввиду под криво работает, и лишь на одном симуляторе?
давай список симуляторов и девайсов на которых пытаешься это запустить в студию и детализуй, что именно по твоему криво

Код

int const_value=(int)(getHeight()/3);



--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
TyVik
Дата 10.11.2005, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 1.10.2005

Репутация: нет
Всего: нет



Ага, вот меня double тоже смутил smile
А список симуляторов не скажу - они в комплекте с WTK 2.2 идут и как о них что/то узнать...
Криво - полоски не равномерно, как задумано, а со сдвигом и растяжением<как реализовано smile>
PM MAIL   Вверх
Dancer
Дата 10.11.2005, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

Репутация: 33
Всего: 37



слушай, запости код, а то нихрена не понятно, про какие ты полоски имеешь ввиду. И как это они у тебя не равномерно могут идти, если интервал у тебя будет константой определён, какая бы она там не правильная не была.


--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
TyVik
Дата 10.11.2005, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 1.10.2005

Репутация: нет
Всего: нет



g.drawLine(getWidth()/3,0,getWidth()/3,getHeight());
g.drawLine(2*getWidth()/3,0,2*getWidth()/3,getHeight());
g.drawLine(0,getHeight()/3,getWidth(),getHeight()/3);
g.drawLine(0,2*getHeight()/3,getWidth(),2*getHeight()/3);

рисует решётку
PM MAIL   Вверх
sergejzr
Дата 10.11.2005, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: нет
Всего: 360



Ты ведь умножаешь потом... Нельзя обрезать результат в таком случае. Представь, что (getHeight()/3)вернёт тебе 2,9.
Храни лучше в double. Или храни две константы
Код

    
int a=(int)(getHeight()/3);
int b=(int)(getHeight()*2/3);

g.drawLine(a,0,a,getHeight());
g.drawLine(b,0,b,getHeight());
g.drawLine(0,a,getWidth(),a);
g.drawLine(0,b,getWidth(),b);



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Nemesis
Дата 26.12.2005, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 20.2.2005
Где: Москва

Репутация: 3
Всего: 5



TyVik
Проблема твоя ясна. Дело в том, что деление на 3 и вообще любое деление целых чисел - вещь забавная, потому что происходит не округление, а отброс дробной части и выделение целой. Тут уж ничего не попишешь... Поэтому загоняй лучше это в константы...
--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0507 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.