而其他语句等效于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 code
与 while()..; 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
是一个条件语句。
但是
while
是 loop
,它再次迭代并在 false
condition 发生时自行停止。
【讨论】:
【参考方案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)