1

这是我的随机填充代码,基于循环,它应该在“KELVIN”之后生成 4 个随机字符(因为 KELVIN 需要 6 个字符),但是当我打印时,只生成 2 个随机字符,奇怪

   Random r = new Random();
            //string imported  
            String word = "KELVIN";

            //loop for fill up 10 characters
            for (int i=0; i<10-word.length();i++)
            {
               char randomadd = (char)(r.nextInt(26) + 'A');
               word +=randomadd;
            }

        System.out.print(word+"==");

控制台输出:

KELVINSN==
4

1 回答 1

3

在每个循环中,您都会影响单词的长度。效果是您只添加了使字长达到 10 所需的一半字符。

第一次迭代。 i为 0。条件i < 10 - 6true,因此添加了一个随机字符。

第二次迭代。 i是 1,但字长现在是 7。 i < 10 - 7is true,所以添加了第二个随机字符。

Nowi是 2,但字长现在是 8. i < 10 - 8is false,所以循环结束。

解决方案是预先确定所需的字符数,这样每次迭代都不会改变:

int charsNeeded = 10 - word.length();
for (int i = 0; i < charsNeeded; i++)
于 2013-09-06T17:18:29.610 回答