关于python:虽然else语句相当于Java?

While else statement equivalent for Java?

Python中while / else的Java等价物是什么? 因为它在Java中不起作用。 第一部分是我的python代码,第二部分是我尝试将其翻译成Java。 编辑:tring复制while-else

1
2
3
4
5
6
7
8
9
10
  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尝试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  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);


最接近的Java等价物是明确地跟踪你是否以break退出循环...但你的代码中实际上没有break,因此使用while-else首先是没有意义的。

对于那些不知道Python在其他方面做什么的Java人(和Python人),如果循环没有break,则执行while循环上的else子句。考虑它的另一种方法是,如果while条件为假,它就会执行,就像使用if语句一样。

有一段时间 - 实际上有一个break

1
2
3
4
5
6
while whatever():
    if whatever_else():
        break
    do_stuff()
else:
    finish_up()

可以翻译成

1
2
3
4
5
6
7
8
9
10
11
boolean noBreak = true;
while (whatever()) {
    if (whateverElse()) {
        noBreak = false;
        break;
    }
    doStuff();
}
if (noBreak) {
    finishUp();
}

试试这个:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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);


在Java中

if是条件语句。

whileloop,它再次迭代,并在false条件发生时自行停止。


如果你看一下Java Backus-Naur形式语法(语法规范),else永远不会遵循while

您的解决方案需要相应地进行修改。您可以将while放在else中,这样就可以处理if语句。

1
2
3
4
5
6
7
if temp.nextToBeeper() {
     //handle
 } else {
      while(temp.frontIsClear()) {
         //handle
      }
 }

再使用一个if语句:

1
2
3
4
5
if (temp.nextToABeeper())
    // pick beer
} else {
    while (temp.frontIsClear()) { /* your code */ }
}

要么:

1
2
3
4
5
if (temp.frontIsClear())
    while (temp.frontIsClear()) { /* your code */ }
} else if (temp.nextToABeeper()) {
    // pick beer
}