Как проверить процент в операторе if? - PullRequest
2 голосов
/ 09 февраля 2011

Как я могу проверить процент в операторе if?

For example:

        package Walker;

    public class Walker {
         int tuning = 10;
         int speed = 0;
         int gas = 100;
         int energy = 100;
         int time = 1;
         int strecke = 0;
         boolean test = true;
         boolean beschleunigung = false;

        Walker() {
            tuning = 10;
            gas = 0;
            energy = 100;
        }

             public void setGas(int x) {
                 gas = x;
             }

             public void setSpeed(int x) {
                 tuning = x;
             }

             public void walk() {
                 boolean walking = true;
                 while (walking) {

                     if (speed<10) {
                         beschleunigung = true;
                     }else {
                         beschleunigung = false;
                     }
                     if (beschleunigung==true) {
                         speed +=1+(tuning);
                         energy -=1;
                         }
                     strecke = (speed*time);
                     speed = (strecke/time);
                     gas -= 1;
                     energy -= 1;
                     time +=1; 
                     if (gas<1||energy<1){
                         break;
                     }
                     }
             System.out.println("Distance "+(strecke)+" meter");
             System.out.println("Gas left :"+gas);
             System.out.println("Energy left : "+energy);
              }

    }

_User может изменять значения "tuning" и "gas"

И это та часть, которая мне нравитсядобавить:

if (strecke==33%) {
system.out.println("Test");
}

Может ли кто-нибудь мне помочь?

Ответы [ 6 ]

3 голосов
/ 09 февраля 2011

В Java нет процентного оператора (он используется как оператор Modulo - сумма, оставшаяся после деления), поэтому вам нужно рассчитать процент самостоятельно.

К сожалению, из вашего кода я не могуопределите, с чем нужно сравнить gas, чтобы определить, что это за 33%.

2 голосов
/ 09 февраля 2011

Вам не хватает важной части здесь.33% чего?Некоторые люди здесь предположили, что это 33% от одного, как в 0,33.Это маловероятно, так как вы делаете --gas в конце, поэтому вы, вероятно, работаете с целыми числами.

Я полагаю, вы намереваетесь сказать «33% от первоначального объема».Так что это станет:

public void walk() {
 boolean walking = true;
 int currentGas = initialGas;
 while (walking) {
 if (currentGas == Math.round((double)initialGas * 0.33)) {
  System.out.println("Walker reached at 33% of Gas "+(output*speed)+" meter");
           }
 if (currentGas <0||energy<0) {
  System.out.println("Run out of Gas or Energy!");
  walking = false;
  break;         
 }
 --currentGas ;
 output +=1; }
 System.out.println("Distance "+(output*speed)+" meter");
}

Это должно сделать это.

2 голосов
/ 09 февраля 2011

Создать вспомогательный метод

private double percentage(double value)
{
  return 100 * value;
}

и используйте его для упаковки gas:

if (percentage(gas) == 33)
{
...
}
2 голосов
/ 09 февраля 2011

Изменить это:

if (gas==33%)

до:

if (gas==0.33)

(при условии, что газ поплавковый / двойной)

править: Почему меня опускают? 33% математически эквивалентно 0,33.

edit: Возможно, вы захотите сделать проверку на расстоянии, например

if (gas > 0.325 && gas < 0.335)

Потому что просто проверка на точное значение 33%, вероятно, не то, что вы хотели.

1 голос
/ 09 февраля 2011

Вы не используете% правильно. В Java оператор% используется для поиска остатка. Например, верно следующее:

0 == 6% 3 (потому что 6, деленное на 3, не имеет остатка)

1 == 7% 3 (потому что 7, деленное на 3, имеет остаток 1)

Если вы хотите пересчитать газ в процентах, то вам, вероятно, следует разделить его на что-то. Например:

if (газ / полный бак == 0,33)

Однако вы также должны понимать, что оно никогда не может быть точно равно 0,33. Таким образом, вы, вероятно, хотите проверить, <<.33. Если это так, распечатайте сообщение и установите логическую переменную, чтобы помнить, что вы уже распечатали ее. </p>

Также обратите внимание, что если газ является целочисленным типом, вам необходимо сначала преобразовать его в число с плавающей точкой:

if ((float) gas / fulltank == 0.33)

0 голосов
/ 09 февраля 2011

Вам не нужен процент в данном конкретном случае, просто используйте обычный простой int. Инициализируйте газ на 100, а затем вычтите один на каждой итерации цикла. Замените код «if (gas == 33%)» на «if (gas == 33)» и все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...