Python中while / else的Java等价物是什么?因为它在Java中不起作用。第一部分是我的python代码,第二部分是我尝试将其翻译成Java。 编辑:tring to replicate while-else
while temp.frontIsClear():
if temp.nextToABeeper():
temp.pickBeeper()
count += 1
temp.move()
else:
if temp.nextToABeeper():
temp.pickBeeper()
count += 1
print "The count is ", count
Java尝试
Robot temp = new Robot();
int count = 0;
while (temp.frontIsClear())
{
if (temp.nextToABeeper())
{
temp.pickBeeper();
count += 1;
}
temp.move();
}
else
{
if (temp.nextToABeeper())
{
temp.pickBeeper();
count += 1;
}
}
print ("The count is ", count);
答案 0 :(得分:5)
最接近的Java等价物是明确跟踪您是否使用break
退出循环...但实际上 break
代码,所以使用while-else首先是毫无意义的。
对于那些不知道Python在其他方面做什么的Java人(和Python人),如果循环没有else
,则while
循环上的break
子句会执行。考虑它的另一种方法是,如果while
条件为假,则执行它,就像使用if
语句一样。
有一段时间 - 实际上有一个break
:
while whatever():
if whatever_else():
break
do_stuff()
else:
finish_up()
可以翻译为
boolean noBreak = true;
while (whatever()) {
if (whateverElse()) {
noBreak = false;
break;
}
doStuff();
}
if (noBreak) {
finishUp();
}
答案 1 :(得分:1)
再使用一个if语句:
if (temp.nextToABeeper())
// pick beer
} else {
while (temp.frontIsClear()) { /* your code */ }
}
或者:
if (temp.frontIsClear())
while (temp.frontIsClear()) { /* your code */ }
} else if (temp.nextToABeeper()) {
// pick beer
}
答案 2 :(得分:1)
如果查看Java Backus–Naur form Grammar(语法规范),else
永远不会跟随while
。
您的解决方案需要相应修改。您可以将while
放在else
中,这样就可以处理if
语句。
if temp.nextToBeeper() {
//handle
} else {
while(temp.frontIsClear()) {
//handle
}
}
答案 3 :(得分:1)
在Java中
if
是条件语句。
但是
while
loop
再次迭代,并在false
条件发生时自行停止。
答案 4 :(得分:1)
试试这个:
Robot temp = new Robot();
int count = 0;
if (temp.frontIsClear())
{
while (temp.frontIsClear())
{
if (temp.nextToABeeper())
{
temp.pickBeeper();
count += 1;
}
temp.move();
}
}
else if (temp.nextToABeeper())
{
temp.pickBeeper();
count += 1;
}
print ("The count is ", count);