虽然else语句相当于Java?

时间:2017-04-07 16:36:57

标签: java python if-statement while-loop

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);

5 个答案:

答案 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);