繁体   English   中英

如何使用“x <= y && x> = y && x!= y”使循环无限?

[英]How to make loop infinite with “x <= y && x >= y && x != y”?

几年前我有这个面试问题,但我还没有找到答案。

什么应该是x和y来进行无限循环?

while (x <= y&& x >= y && x != y) {

}

我们尝试使用Naninfinity+/-null

float vs int

您需要两个可比较的变量,具有相同的值,但代表不同的实例,例如:

Integer x = new Integer(0);
Integer y = new Integer(0);

x <= yy <= x都为真,因为Integer是未装箱的,但实例等式x == y为假。

请注意,它也适用于FloatLongDouble ,并且任何值(不仅仅是0)都有效。


您还可以使用JVM的复杂性 - 它们通常只缓存最多127个整数,所以这也可以工作:

Integer x = 128;
Integer y = 128;

(但它不会与127)。

或者更简单,因为Double s通常根本没有缓存:

Double x = 0d;
Double y = 0d;

你必须创建两个整数对象,例如:

Integer x = new Integer(2);
Integer y = new Integer(2);

因为xy是对象而没有序数类型,所以你得到一个无限循环。

你得到了答案,我只想说我是如何达到同一个答案的。 在正常的世界中,这样的测试将毫无用处,因此两个数字无法像这样工作。 所以这意味着它必须是一些特定的java。

x和y可以是简单的类型 - 这使得它立刻变得不可能。

x和y可以是对象。 但是哪些对象与<=或> =进行比较? 只有'盒装'号码。 因此答案非常快。

这里是。

Integer x =1;
Integer y = new Integer(1);
while(x <= y&& x >= y && x != y) {
    System.out.println("Success");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM