Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Цикл for

Тема в разделе "Разработка плагинов для новичков", создана пользователем baksovic111, 4 апр 2015.

Статус темы:
Закрыта.
  1. Автор темы
    baksovic111

    baksovic111 Активный участник Пользователь

    Баллы:
    88
    Skype:
    Baksovic2
    Имя в Minecraft:
    Baksovic
    Прива всем)
    Помогите пожалуйста решить 1 проблему.
    У меня есть цикл в коде для поиска определенного pex с числом double

    for (float value = 0.0F; value <= 10.0F; value = (float)(value + 0.1D)) {
    if ((player.hasPermission("multiplier." + value))
    {my code...}}

    Проблема в том что цикл прибавляет к value не всегда целые значения.
    Я выводил переменную value и в консоли я получал примерно следующее..
    0.1
    0.2
    0.3
    0.4
    0.5
    0.6
    0.6999999998
    0.7999999999
    0.800000001

    Что то в роде этого. Подскажите пожалуйста как это решить..
    У меня не достаточно опыта чтобы решить эту проблему с к сожалению(
     
  2. Хостинг MineCraft
    <
  3. LaoTheLizard

    LaoTheLizard Старожил Пользователь

    Баллы:
    103
    Skype:
    sgp_the_controller
    А зачем тебе такие pex?
     
  4. Автор темы
    baksovic111

    baksovic111 Активный участник Пользователь

    Баллы:
    88
    Skype:
    Baksovic2
    Имя в Minecraft:
    Baksovic
    Таким образом я буду получать нужную мне цифру из прав и дальше с ней работать.
     
  5. LaoTheLizard

    LaoTheLizard Старожил Пользователь

    Баллы:
    103
    Skype:
    sgp_the_controller
    А так не будет работать?
    Код:
    value = value + 0.1F
    
     
  6. Автор темы
    baksovic111

    baksovic111 Активный участник Пользователь

    Баллы:
    88
    Skype:
    Baksovic2
    Имя в Minecraft:
    Baksovic
    Пробовал... Еще раз попробую.. Выдает значения еще по хлеще...

    [22:47:15] [Server thread/INFO]: 0.10000000149011612
    [22:47:15] [Server thread/INFO]: 0.20000000298023224
    [22:47:15] [Server thread/INFO]: 0.30000000447034836
    [22:47:15] [Server thread/INFO]: 0.4000000059604645
    [22:47:15] [Server thread/INFO]: 0.5000000074505806
    [22:47:15] [Server thread/INFO]: 0.6000000089406967
    [22:47:15] [Server thread/INFO]: 0.7000000104308128
    [22:47:15] [Server thread/INFO]: 0.800000011920929
    [22:47:15] [Server thread/INFO]: 0.9000000134110451
     
  7. Crystalist_2D

    Crystalist_2D Активный участник Пользователь

    Баллы:
    68
    Имя в Minecraft:
    Crystalist
    почитай про арифметику с плавающей запятой.
     
  8. LaoTheLizard

    LaoTheLizard Старожил Пользователь

    Баллы:
    103
    Skype:
    sgp_the_controller
    Прикольно. Ну тогда, может, так?
    Код:
    for (double value = 0; value <= 10; value = value + 0.1D))
    
     
  9. Автор темы
    baksovic111

    baksovic111 Активный участник Пользователь

    Баллы:
    88
    Skype:
    Baksovic2
    Имя в Minecraft:
    Baksovic
    Ява очень против того чтобы я сделал то что хочу...

    [22:53:42] [Server thread/INFO]: 0.0
    [22:53:42] [Server thread/INFO]: 0.1
    [22:53:42] [Server thread/INFO]: 0.2
    [22:53:42] [Server thread/INFO]: 0.30000000000000004
    [22:53:42] [Server thread/INFO]: 0.4
    [22:53:42] [Server thread/INFO]: 0.5
    [22:53:42] [Server thread/INFO]: 0.6
    [22:53:42] [Server thread/INFO]: 0.7
    [22:53:42] [Server thread/INFO]: 0.8999999999999999
    [22:53:42] [Server thread/INFO]: 0.9999999999999999
    [22:53:42] [Server thread/INFO]: 1.0999999999999999
     
  10. LaoTheLizard

    LaoTheLizard Старожил Пользователь

    Баллы:
    103
    Skype:
    sgp_the_controller
    Ход конем:
    Код:
    for (int value = 0; value <= 10; value++)) {
    if ((player.hasPermission("multiplier." + value/10))
    {my code...}}
    
     
  11. Автор темы
    baksovic111

    baksovic111 Активный участник Пользователь

    Баллы:
    88
    Skype:
    Baksovic2
    Имя в Minecraft:
    Baksovic
    Таким образом я буду получать целые числа...
     
  12. LaoTheLizard

    LaoTheLizard Старожил Пользователь

    Баллы:
    103
    Skype:
    sgp_the_controller
    Ну да. А в if будешь делить их. Только, наверное, так:
    if ((player.hasPermission("multiplier." + (double)value/10))
     
  13. Studenikin

    Studenikin Старожил Пользователь

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    а не проще все сделать в int?
    Код:
    for (int value = 0; value <= 10; value++) {
    if ((player.hasPermission("multiplier." + value))
    {my code...}}
     
  14. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    А потому что работать с числами с плавающей запятой - гиблое дело.
     
  15. aceJKE

    aceJKE Старожил Пользователь

    Баллы:
    123
    Мне кажется, что тут пахнет каким-то костылем, но можно получать список имеющихся у игрока multiplier'ов и производить действия уже с ними

    [​IMG]
     
  16. saharin94

    saharin94 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    RikkiLooh
    Имя в Minecraft:
    RubukkitDniwe
    Такой поиск занимает драгоценное время. Permissions годны в общем только для boolean значений (можно или нельзя). Для других, вроде лимитов - лучше определять какой группе принадлежит игрок и в зависимости от этого устанавливать для него лимиты.
     
Статус темы:
Закрыта.

Поделиться этой страницей