而else语句等价于Java?

2024-09-27 07:31:39 发布

您现在位置:Python中文网/ 问答频道 /正文

Java与Python中的while/else是什么等价物?因为它在Java中不起作用。第一部分是我的python代码,第二部分是我试图将其转换成Java。编辑:字符串复制,否则

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

Tags: the代码moveifiscountrobotjava
3条回答

最接近的Java等价物是显式地跟踪是否使用break退出了循环。。。但实际上,在代码中并没有包含abreak,所以首先使用while else是没有意义的。

对于不知道Python是什么的Java人员(和Python人员),如果循环结束时没有break,则在while循环上执行else子句。另一种思考方法是,如果while条件为false,它就会执行,就像使用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();
}

如果您查看Java Backus–Naur form Grammar(语法规范),那么else永远不会遵循while

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

if temp.nextToBeeper() {
     //handle
 } else {
      while(temp.frontIsClear()) {
         //handle
      }
 }

再使用一个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
}

相关问题 更多 >

    热门问题