【问题标题】:Return as String Value from For Loop Java从 For 循环 Java 中以字符串值形式返回
【发布时间】:2014-11-14 23:15:32
【问题描述】:

我正在尝试创建一个包含 50 个字符的循环,然后将整个 50 个字符作为字符串返回,但不幸的是,字符串只返回最后一个字母,而不是全部 50 个字符。 getRandomUpperChar() 只是我创建的一种方法,用于获取从“A”到“Z”的随机大写字符值。

public static String initializeKey(int num , int minNum, int maxNum) {
    String random = "";
    for(int j = 0; j <num; j++) {
        getRandomUpperChar();
        char Xp = getRandomUpperChar(minNum, maxNum);

        random = "" +  Xp;
        System.out.print(random);
    }
    return random;
}

【问题讨论】:

  • 出于好奇,在第 4 行没有 args 的情况下,对 getRandomUpperChar() 的方法调用是什么?你的方法重载了吗?如果是这样,无参数方法有什么作用?

标签: java string loops


【解决方案1】:

你错过了一些非常基本的东西

random+= "" +Xp 

【讨论】:

  • 天哪,我不敢相信我没有看到。非常感谢您,先生。
  • 你也可以写random += Xp;。由于正确的random 变量,它看起来更干净并且有效。
【解决方案2】:

好吧,替换

random = "" +  Xp;

random = random +  Xp;

会使其工作,但更好的解决方案是:

public static String initializeKey(int num, int minNum, int maxNum) {
  StringBuilder random = new StringBuilder();

  for(int j = 0; j < num; j++){
     char xp = getRandomUpperChar(minNum, maxNum);
     random.append(xp);
  }

  return random.toString(); 
}

【讨论】:

  • 字符串连接 (random = random + xp) 每次执行时至少分配 2 个新字符串,这往往会破坏垃圾收集器。上述方法分配一个StringBuilder和一个String,非常首选。
【解决方案3】:

只需更换你的

random = "" +  Xp;

random +="" + Xp;

你会没事的。

【讨论】:

  • 谢谢你以及马蒂亚斯!我知道这一定很简单,但我一生都想不通!谢谢!!
  • 未来的一个小窍门是在遇到类似问题时调试代码。然后你会很容易发现问题出在哪里。
猜你喜欢
  • 2016-09-03
  • 1970-01-01
  • 2015-01-15
  • 2020-03-30
  • 2016-10-19
  • 2020-12-25
  • 2014-04-22
  • 2019-02-20
  • 2019-07-11
相关资源
最近更新 更多