【问题标题】:Java Random - How can one of two equal values be different than the other?Java Random - 两个相等值中的一个如何与另一个不同?
【发布时间】:2013-09-27 02:34:39
【问题描述】:

看看这段代码:

        while(oneRay[pick][0] == "" || oneRay[pick][0] == null)
        hold = oneRay.length;
        random = new Random(); 
        System.out.println(oneRay.length + "\n" + hold);
        pick = random.nextInt(hold);
        System.exit(0);
    }

在控制台输出中,我看到 33,然后是 0。这有什么意义?首先,我将保持设置为等于 oneRay 的长度,然后打印 oneRay 的长度,然后是保持,我应该看不到 33 和 33 还是最坏的 0 和 0? 我知道你们中的一些人今晚看到了我的许多问题,但我无法通过这个循环,总是有一些错误或其他错误,在这种情况下,随机不会继续,因为保持的值为 0... 请帮帮我!

【问题讨论】:

  • 使用equals 来比较对象的观察相等性。 == 供参考
  • 是的。当您将== 与对象一起使用时,您是在比较内存地址,而不是值。可能不是你想做的事。

标签: java swing random int


【解决方案1】:

你用过

while(oneRay[pick][0] == "" || oneRay[pick][0] == null)

然后你没有使用括号,这意味着你的代码实际上像

while(oneRay[pick][0] == "" || oneRay[pick][0] == null) {
    hold = oneRay.length;
}
random = new Random(); 
System.out.println(oneRay.length + "\n" + hold);

特别是,如果while 条件不成立,那么hold = oneRay.length 甚至不会被执行。

(您还应该使用.equals("").isEmpty 而不是== "",并且您应该首先进行空值检查而不是第二次。)

【讨论】:

    猜你喜欢
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-05
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多