而其他语句等效于Java?

Posted

技术标签:

【中文标题】而其他语句等效于Java?【英文标题】:While else statement equivalent for Java? 【发布时间】:2017-09-03 03:13:52 【问题描述】:

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

【问题讨论】:

Java 中没有这样的东西,你只需要做 if(!temp.frontIsClear()) 而不是 else 你的 python 代码还是坏了,因为 while 块不包含中断。 我不知道Python中有这样的东西,但我不明白它的意义。 white().. else codewhile()..; code 有何不同? @SpencerWieczorek this SO question 的最佳答案可以回答您的问题。 while-else-loop的可能重复 【参考方案1】:

最接近的 Java 等效项是显式跟踪您是否使用 break... while-else 一开始是没有意义的。

对于不知道 Python 的 while-else 做什么的 Java 人员(和 Python 人员),如果循环结束时没有 break,则在 while 循环上执行 else 子句。另一种思考方式是,如果while 条件为假,它就会执行,就像if 语句一样。

实际上有一个break的while-else:

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

【参考方案4】:

在 Java 中

if 是一个条件语句。

但是

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

【讨论】:

【参考方案5】:

试试这个:

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?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 等效于 C# LINQ 或其他获取数据的方式 [关闭]

PHP(或其他 linux 友好)等效于 .Net System.Xml.Linq

等效于 Chrome CSS 显示:-webkit-box 在其他浏览器上

给定一个类型对象的实例,如何调用该类的构造函数(在其他语言中等效于GetConstructor)

@Primary 等效于自动装配的 Spring JPA 存储库

C# 等效于 Java 的 Arrays.fill() 方法[重复]