定义一个变量i,让循环while((i+1)==(i+1))能够完成,请说明原因?

如题所述



while ((i + 1) == (i + 1)) {
}

 我了个去,还在纠结... 这题的意思就是:
在两个值相同的情况下,使条件不成立。
OK... 既然用的是 == 那只要让两边对象的字节码不同就可以了。

那么这个i.. 只要不是基本类型或Long、Integer等等之类的,其它都可以。 

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-23
int i = 0;
while((i+1)==(i+1)){
...//需要循环的语句!
if(想什么时候跳出循环){
break;
}
}
第2个回答  2013-10-22
什么是能够完成?
你这个条件永远成立,是不是想跳出循环?
那么你在while里面加个if条件,break就行了追问

那么变量i该怎么定义啊?

追答    public static void main(String[] args) {

        int i = 0;
        while ((i + 1) == (i + 1)) {
            if (i == 10) {
                break;
            }
            System.out.println(i);
            i++;
        }
    }

不知道你为什么放这个条件,没意义。。。。

这个等价于:

    public static void main(String[] args) {

        int i = 0;
        while (true) {
            if (++i == 10) {
                break;
            }
            System.out.println(i);
        }
    }

追问

这是我见的一个面试题,原题是这样的,
试定义一个变量i,让以下循环能够结束
while((i+1)==(i+1)){},请说明原因;

追答

    你确定题没记错?

    你确定是java题?

    如果你确定,我觉得这样的面试题,没意义,就算有答案,也是投机取巧,不能证明什么,这题太偏了,这题不会回答,没什么。希望你别在这样的题上浪费时间。java里很多精髓等着你去接触学习呢。

追问

真的 啊哥哥。最近都快疯了,整天看面试题;

追答

balsum的回答到是个方法
原因:“” + 1 就变成了“1”,即 “1” == “1” ,这两个“1” 是两个不同的对象

此时 == 比较的是这两个是否为同一个对象(是否指向同一块内存),所以这个条件是false,所以循环进不去,直接跳转到后面了。

还是那句话,我不认为这是一道很好的面试题。理解了就可以了。
你看面试题,准备面试去么?
多看看基础,基础很重要,就跟考试一样,准备准备基础知识,偏题怪题看不看没太大关系

相似回答