这两个 for 循环行为不同的原因是什么?
What is the reason for these two for loop acting differently?
嗨,谁能帮我解决这个问题?
第一段代码给出了预期的输出。
但是第二个用于无限循环。
这是什么原因?
谢谢。
1.
import java.util.Scanner;
class Numbers
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Enter a starting number: ")
int start = scan.nextInt();
for(int a = start;a<=(start+10);a++)
{
System.out.println(a);
}
}
}
2.
import java.util.Scanner;
class Numbers
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Enter a starting number: ")
for(int start = scan.nextInt();start<=(start+10);start++)
{
System.out.println(start);
}
}
}
这个 for(int start = scan.nextInt();start<=(start+10);start++)
将变化的变量与变化的值进行比较,保持相同的距离。
IE。 start
的值永远低于start+10
,一开始你得到的是一个死循环。它只能在值变得如此之高以至于无法再表示它们时才会终止,奇怪的事情发生了。例如,那时 start+10
可能看起来低于 0,因此看起来也低于 start
,后者还没有超过那个奇怪的边界。
在第一个块中,start
是一个固定值的常量变量,条件是在a
和start
之间(a
不断增加a++
和 start
不会改变它的值)。
而在第二个块中,条件在start
和start+10
之间,但是start
在循环函数中随着start++
不断增加,这使得循环是无限(start
不断更改其值,因此 start<=(start+10)
始终为真)。
在你的第二段代码中
for(int start = scan.nextInt();start<=(start+10);start++)
{
System.out.println(start);
}
您正在将 start
与自身加 10 进行比较。无论您要执行什么操作,都不能等于自身加 10。start
将始终小于本身加 10,因此产生无限循环。 这是一个语义错误。您应该使用不同的变量来跟踪循环,就像您在第一个代码段中所做的那样,并使用第二个变量来跟踪对抗(start
你的情况)。
嗨,谁能帮我解决这个问题?
第一段代码给出了预期的输出。 但是第二个用于无限循环。 这是什么原因?
谢谢。
1.
import java.util.Scanner;
class Numbers
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Enter a starting number: ")
int start = scan.nextInt();
for(int a = start;a<=(start+10);a++)
{
System.out.println(a);
}
}
}
2.
import java.util.Scanner;
class Numbers
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Enter a starting number: ")
for(int start = scan.nextInt();start<=(start+10);start++)
{
System.out.println(start);
}
}
}
这个 for(int start = scan.nextInt();start<=(start+10);start++)
将变化的变量与变化的值进行比较,保持相同的距离。
IE。 start
的值永远低于start+10
,一开始你得到的是一个死循环。它只能在值变得如此之高以至于无法再表示它们时才会终止,奇怪的事情发生了。例如,那时 start+10
可能看起来低于 0,因此看起来也低于 start
,后者还没有超过那个奇怪的边界。
在第一个块中,start
是一个固定值的常量变量,条件是在a
和start
之间(a
不断增加a++
和 start
不会改变它的值)。
而在第二个块中,条件在start
和start+10
之间,但是start
在循环函数中随着start++
不断增加,这使得循环是无限(start
不断更改其值,因此 start<=(start+10)
始终为真)。
在你的第二段代码中
for(int start = scan.nextInt();start<=(start+10);start++)
{
System.out.println(start);
}
您正在将 start
与自身加 10 进行比较。无论您要执行什么操作,都不能等于自身加 10。start
将始终小于本身加 10,因此产生无限循环。 这是一个语义错误。您应该使用不同的变量来跟踪循环,就像您在第一个代码段中所做的那样,并使用第二个变量来跟踪对抗(start
你的情况)。