看一下这段代码:

        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。这有什么意义?首先,将hold设置为等于oneRay的长度,然后打印oneRay的长度,然后打印hold,我是否应该看不到33和33或最差的0和0?
我知道你们中的一些人今晚已经看过我的许多问题,但是我无法绕过这个循环,总会出现一些错误或其他错误,在这种情况下,因为hold的值为0,所以Random不会继续进行...
请帮我!

最佳答案

你用过

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而不是== "",并且应该首先而不是第二次执行null检查。)

09-15 15:26