如何在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");
}
有人可以帮助我吗?
答案 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)”,就是这样。