这是我的随机填充代码,基于循环,它应该在“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==
答案 0 :(得分:3)
在每个循环中,您会影响单词的长度。结果是你只需要添加一半所需的字符,以使字长达到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++)