为什么我的 'if' 语句没有在这段代码中执行? (加工)
Why is my 'if' statement not executing in this code? (Processing)
void setup(){
size(800,600);
background(0);
fill(255,40,40);
noStroke();
ellipse(400,80,20,20);
ellipse(150,513,20,20);
ellipse(650,513,20,20);
fill(255);
frameRate(10);
}
float traceX = 350;
float traceY = 350;
String vertexPick = "";
float rand = 0;
void draw(){
point(traceX,traceY);
rand = random(1);
if (rand > 2/3) {
vertexPick = "A";
}
else if (rand < 1/3) {
vertexPick = "B";
} else {
vertexPick = "C";
}
if (vertexPick == "A") {
traceX = (traceX+400)/2;
traceY = (traceY+80)/2;
}
else if (vertexPick == "B") {
traceX = (traceX+150)/2;
traceY = (traceY+513)/2;
}
else
{
traceX = (traceX+650)/2;
traceY = (traceY+513)/2;
}
}
我已经检查过,每次通过 'draw' 函数它都会生成一个介于 0 和 1 之间的新随机数。但是它没有根据数字将 vertexPick 分配给一个新字母,而是卡住了在 vertexPick 的一个值上并永远留在那里。谁能告诉我为什么?为什么它不会在每个循环中再次执行 if 语句?
你的整数除法有问题,即 2/3
是 0
并且条件 rand > 2/3
始终为真。
要进行浮点除法,请使用 2.0/3
代替 2/3
。
(看这个问题Division of integers in Java)
void setup(){
size(800,600);
background(0);
fill(255,40,40);
noStroke();
ellipse(400,80,20,20);
ellipse(150,513,20,20);
ellipse(650,513,20,20);
fill(255);
frameRate(10);
}
float traceX = 350;
float traceY = 350;
String vertexPick = "";
float rand = 0;
void draw(){
point(traceX,traceY);
rand = random(1);
if (rand > 2/3) {
vertexPick = "A";
}
else if (rand < 1/3) {
vertexPick = "B";
} else {
vertexPick = "C";
}
if (vertexPick == "A") {
traceX = (traceX+400)/2;
traceY = (traceY+80)/2;
}
else if (vertexPick == "B") {
traceX = (traceX+150)/2;
traceY = (traceY+513)/2;
}
else
{
traceX = (traceX+650)/2;
traceY = (traceY+513)/2;
}
}
我已经检查过,每次通过 'draw' 函数它都会生成一个介于 0 和 1 之间的新随机数。但是它没有根据数字将 vertexPick 分配给一个新字母,而是卡住了在 vertexPick 的一个值上并永远留在那里。谁能告诉我为什么?为什么它不会在每个循环中再次执行 if 语句?
你的整数除法有问题,即 2/3
是 0
并且条件 rand > 2/3
始终为真。
要进行浮点除法,请使用 2.0/3
代替 2/3
。
(看这个问题Division of integers in Java)