Java 预期此循环是无限的,但不是无限的
以下是我的Java代码:Java 预期此循环是无限的,但不是无限的,java,Java,以下是我的Java代码: public class Prog1 { public static void main(String[] args) { int x = 5; while (x > 1) { x = x + 1; if (x < 3) System.out.println("small x"); } } } 我期待一个无
public class Prog1 {
public static void main(String[] args) {
int x = 5;
while (x > 1) {
x = x + 1;
if (x < 3)
System.out.println("small x");
}
}
}
我期待一个无限循环。。。知道它为什么会这样吗?有一个无限循环。就在一段时间内,x得到的比特数超过了有符号整数的极限,它变成了负数
public class Prog1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int x = 5;
while (x > 1) {
x = x + 1;
System.out.println(x);
if(x < 3)
System.out.println("small x");
}
}
}
公共类程序1{
/**
*@param args
*/
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
int x=5;
而(x>1){
x=x+1;
系统输出println(x);
if(x<3)
System.out.println(“小x”);
}
}
}
X超出了int的限制。请通过为X添加println语句来检查该值
public static void main(String[] args) {
// TODO Auto-generated method stub
int x = 5;
while (x > 1) {
x = x + 1;
if(x < 3){
System.out.println(x);
System.out.println("small x");
}
}
publicstaticvoidmain(字符串[]args){
//TODO自动生成的方法存根
int x=5;
而(x>1){
x=x+1;
if(x<3){
系统输出println(x);
System.out.println(“小x”);
}
}
我的jvm显示x为-2147483648x从5开始。然后循环到6、7、8等等。最终它达到可能的最大整数。下一个x=x+1将其设置为最负整数,负20亿。这小于3,因此消息被输出。然后再次执行while条件,现在失败,退出lo作品 因此,虽然它看起来是一个无限循环,但实际上并非如此
这是一个家庭作业问题吗?你为什么要写这么奇怪的代码呢?Java整数是有符号的,它们会溢出(就像在C和许多其他语言中一样)。 尝试以下方法检查此行为:
public class TestInt {
public static void main(String[] args) {
int x = Integer.MAX_VALUE;
System.out.println(x);
x++;
System.out.println(x);
}
}
public class TestInt {
public static void main(String[] args) {
int x = Integer.MAX_VALUE;
System.out.println(x);
x++;
System.out.println(x);
}
}