【问题标题】:Fill up string length with random character用随机字符填充字符串长度
【发布时间】:2013-09-06 17:14:14
【问题描述】:

这是我的随机填充代码,基于循环,它应该在“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==

【问题讨论】:

  • for 循环中的条件使用word.length(),随着每次迭代而增加。
  • 您应该考虑使用 StringBuilder 而不是每次都向字符串中添加字符。
  • 谢谢大家,我明白了,我会尝试使用 StringBuilder,但我认为 @rgettman 的方法更容易
  • @atom2ueki 我建议先让我的解决方案发挥作用,然后按照 trevor-e 的建议尝试使用 StringBuilderStringBuilder 在构造字符串方面比重复使用+= 连接字符串更有效。
  • @rgettman 你的建议有效,我也去试试StringBuilder

标签: java for-loop random


【解决方案1】:

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

第一次迭代。 i 为 0。条件i &lt; 10 - 6true,所以添加了一个随机字符。

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

现在i 是 2,但字长现在是 8。i &lt; 10 - 8false,所以循环结束。

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

int charsNeeded = 10 - word.length();
for (int i = 0; i < charsNeeded; i++)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 2018-01-25
    • 2018-05-27
    • 1970-01-01
    • 2013-09-20
    • 2021-11-30
    相关资源
    最近更新 更多