Java 在while条件下赋值
首先,我知道=和==之间的区别。我想使用=隐式生成无限循环。 因此,我的代码如下所示:Java 在while条件下赋值,java,loops,conditional-statements,infinite-loop,infinite,Java,Loops,Conditional Statements,Infinite Loop,Infinite,首先,我知道=和==之间的区别。我想使用=隐式生成无限循环。 因此,我的代码如下所示: boolean flag= true; while (flag=false){ System.out.println("inside loop"); } System.out.println("rest"); boolean test = flag = true; // test == true 不幸的是,它没有进入循环并打印“rest”。为什么?我读错了吗? 在
boolean flag= true;
while (flag=false){
System.out.println("inside loop");
}
System.out.println("rest");
boolean test = flag = true;
// test == true
不幸的是,它没有进入循环并打印“rest”。为什么?我读错了吗?
在while条件下,我给标志赋值为false。因此,它在flag=false时循环(这是)
当我这样做时(从false变为true),它进入无限循环:
boolean flag= true;
while (flag=true){
System.out.println("inside loop");
}
System.out.println("rest");
在我看来,这两个例子都应该进入循环。但只有第一个有。请帮助我理解这一点。谢谢与==之间的唯一区别是:
- =是赋值运算符,将值赋给int、boolean或任何常量/变量
- ==是一个运算符,主要用于循环(for、else for、if和while)
boolean flag=true;
while (flag==false){
System.out.println("inside loop");
}
System.out.println("rest");
使用无限循环也不太好。您不会外出,这会使您的代码出错。这是由于赋值运算符的工作方式造成的 在循环条件中,您正在声明
flag = true
它返回true
,但在此之前将true
分配给标志
这是因为我们可以一次完成多个作业,如下所示:
boolean flag= true;
while (flag=false){
System.out.println("inside loop");
}
System.out.println("rest");
boolean test = flag = true;
// test == true
本质上(flag=true)
转换为:
- 将真值指定给标志
- 返回
以供进一步使用true
- while循环测试的第一步是
flag=false
然后立即测试其值,这是错误的
如果值为false,则不会输入while循环。while(flag=false)
执行两项操作:
false
分配给标志
,而(false)
,而(false)
,因此不会执行其主体
类似地,
while(flag=true)
做两件事:
true
分配给标志
,而(true)
由于它的计算结果为
,而(true)
,因此它的主体将无限执行。也许此链接可以帮助您尝试同时将false分配给flag并测试它是否为false吗?不,我试图找出代码在这两种情况下不进入循环的原因:(我真的不明白你在这个问题上想看什么,但是如果你想用你的第一个例子进入一个循环,为什么不在((flag=false)==false)的时候做这个)
很有意思。我会接受一个对我有帮助的答案。很抱歉,我是个新手,所以不知道这个选项。谢谢,是的,我知道。我想故意让无限。我的问题是为什么它在这两种情况下都不进入循环。你知道为什么吗?谢谢,很好的解释。本质上最重要的是flag=false返回FA这就意味着它不会进入循环。