这是我的随机填充代码,基于循环,它应该在“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==
最佳答案
在每个循环中,您都会影响单词的长度。结果是您只添加了使单词长度达到 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++)
关于java - 用随机字符填充字符串长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18663124/