你好,有人能解释一下为什么这会形成一个无限循环吗。谢谢
public static void main(String[] args) {
int x = 5;
int y = 10;
while (x < y) {
x = getX(x);
}
}// end main
public static int getX (int x) {
x = x++;
return x;
}
删除对x的赋值
您可以简单地做:
public static int getX (int x) {
x++;
return x;
}
改变x=x
as
x=x
x
是一个表达式。表达式为“已解决”(已计算);换句话说,它们分解成一个值。例如,表达式5 2
,如果解析,将解析为值7
。
x
是一个有点奇怪的表达方式;它有副作用。它不仅仅是计算,解决它的行为本身会导致事情发生。因此,它做了两件事:它分解成一个值,并导致其他事情发生。
具体来说,x
的意思是:返回x的当前值。但是,作为一个副作用,增加x(但是,这个表达式的值是x,与增加它之前的值相同)。
x=someExpr
是java ese for:解析表达式someExpr
,然后将x
设置为计算值。
因此,x=x
是你永远不想写的愚蠢代码。假设当我们开始时,x
是5,那么:
x
,这意味着值将是5
x
现在的值是6,但表达式的值是5
x
所包含的内容,即5
因此,x是。。。还是5岁。
如果你想增加x,仅此而已,只需:
public static int getX(int x) {
x++;
return x;
}
或者更简单:
public static int getX(int x) {
return x + 1;
}
是你想要的。
hasNext()的定义是“如果此扫描仪的输入中有另一个标记,则返回true。此方法可能会在等待输入扫描时阻塞。扫描仪不会前进超过任何输入。” 当我把 standardInput.hasNext() 放在 for 循环中时,程序会向无穷大运行。但是如果我把它放在 while-loop 中,它不会运行到无穷大。这两个程序之间的区别在哪里,为什么其中一个有效而另一个无效? for循环: while-l
我正在用我的java书复习数据结构,我需要重新创建一个循环链表。我对这个无限循环的链表有问题,弄不清楚为什么。我可以将值插入到列表中,但是打印和删除这些值似乎会无限循环最初插入的值。我如何更改我的List类以避免无限循环? CircularList.Class 链接类
你好,有人能解释一下为什么这会形成一个无限循环吗?谢谢!
基本上,findNode()搜索其数据等于作为参数插入的字符串的节点,但当我调用outputList()方法(该方法返回屏幕上当前节点的字符串表示)时,它将继续无限循环。 outputList方法是: 如有任何帮助,我们将不胜感激。提前道谢。
我有一个带感应帽的覆盆子皮。我制作了一个二进制时钟,我想在Sense hat的显示器上显示并保持更新。然而,我想要的能力,开关时钟与操纵杆中间。一切都很好,除了我的时钟的更新循环阻止任何新的输入一旦启动。 我一直在考虑如何解决这个问题。如何允许脚本/时钟保持运行,并且仍然接受来自操纵杆的新操作。但是一旦while循环开始,我就卡住了。我不知道该用谷歌搜索什么。我已经开始研究async/await,
我希望程序在捕获异常时重新执行 while 循环 - 异常正在接收文本输入。相反,它继续使用下面的代码进行一段时间循环,我希望它再次要求用户输入。 输出: