Java 用随机字符填充字符串长度

Java 用随机字符填充字符串长度,java,for-loop,random,Java,For Loop,Random,这是我的随机填充代码,基于循环,它应该在“开尔文”之后生成4个随机字符(因为开尔文需要6个字符),但当我打印时,只生成2个随机字符,奇怪 Random r = new Random(); //string imported String word = "KELVIN"; //loop for fill up 10 characters for (int i=0; i<10-word.

这是我的随机填充代码,基于循环,它应该在“开尔文”之后生成4个随机字符(因为开尔文需要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+"==");

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

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

第二次迭代
i
是1,但单词长度现在是7
i<10-7
true
,因此添加了第二个随机字符

现在
i
是2,但单词长度现在是8
i<10-8
false
,因此循环结束

解决方案是预先确定所需的字符数,因此不会更改每次迭代:

int charsNeeded = 10 - word.length();
for (int i = 0; i < charsNeeded; i++)
int charsNeeded=10-word.length();
for(int i=0;i
for循环中的
条件使用
word.length()
,它随着每次迭代而增加。您应该考虑使用StringBuilder,而不是每次都向字符串添加字符。谢谢大家,我明白了,我将尝试使用StringBuilder,但我认为@rgetman的方法更有效easier@atom2ueki我建议首先让我的解决方案开始工作,然后按照trevor-e的建议尝试使用
StringBuilder
StringBuilder
在构造字符串方面比反复使用
+=
连接字符串更有效。@如果你的建议行得通,我也会试试
int charsNeeded = 10 - word.length();
for (int i = 0; i < charsNeeded; i++)