如何在if语句中测试百分比?

时间:2011-02-09 14:10:11

标签: java if-statement

如何在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 个答案:

答案 0 :(得分:3)

Java中没有百分比运算符(它用作Modulo运算符 - 除法后剩余的数量),因此您必须自己计算百分比。

不幸的是,从您的代码中,我无法确定应该与gas进行比较的内容,以确定它是否与那里的方式相差33%。

答案 1 :(得分:2)

改变这个:

if (gas==33%)

为:

if (gas==0.33)

(假设气体为浮子/双)

编辑:为什么我会被投票? 33%在数学上等于0.33。

编辑:您可能还想进行远程检查,如

if (gas > 0.325 && gas < 0.335)

因为只检查33%的确切值可能不是你想要的。

答案 2 :(得分:2)

创建辅助方法

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

并用它来包裹gas

if (percentage(gas) == 33)
{
...
}

答案 3 :(得分:2)

你在这里错过了一个重要的输入。 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");
}

应该这样做。

答案 4 :(得分:1)

您没有正确使用%。在Java中,%运算符用于查找余数。例如,以下情况属实:

0 == 6%3(因为6除以3没有余数)

1 == 7%3(因为7除以3的余数为1)

如果你想将气体转化为百分比,那么你应该将它除以某种东西。例如:

if(gas / fulltank == 0.33)

然而,你还需要意识到它可能永远不会完全等于.33。所以你可能想检查它是否是&lt; = .33。如果是,则打印消息并设置一个布尔变量以记住您已经打印过它。

另请注意,如果gas是整数类型,那么您需要先将其转换为float:

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

答案 5 :(得分:0)

在这种特殊情况下你不需要百分比,只需使用普通的int。将气体初始化为100,然后在循环的每次迭代中减去1。将“if(gas == 33%)”的代码替换为“if(gas == 33)”,就是这样。