Java如何在for循环外访问内部变量 拼接随机单词首字母串
问题根因
这是Java变量作用域的基础规则限制:在大括号{}包裹的代码块内部声明的局部变量,仅能在当前代码块及其嵌套的子块内访问,一旦跳出循环块,块内声明的first变量就会被销毁,自然无法在循环外部读取、拼接。
修复方案
在for循环外部提前初始化一个空字符串,专门用来存储拼接的首字母结果;每次循环拿到当前单词的首字母时,就把首字母追加到这个外部声明的字符串上,循环结束后直接输出这个字符串即可。
修正后的可运行代码:
int N = IOTool.readIntFromTerminal("Enter amount of words: "); // 循环外提前定义拼接结果变量,初始为空字符串 String firstLetterResult = ""; for (int i = 1; i <= N; i++) { String noun = WordTool.getRandomNoun(); System.out.println("Word #" + i + " is " + noun); char first = noun.charAt(0); // 把当前单词首字母追加到结果串中 firstLetterResult += first; } // 循环结束后直接输出拼接完成的结果 System.out.println("All the first letters: " + firstLetterResult);
补充说明:如果后续需要拼接的字符串长度很长,推荐用
StringBuilder类做拼接,性能比直接用+拼接字符串更好。你当前场景下输入的数字不会特别大,上面的写法逻辑简单直观,完全满足需求。
内容的提问来源于stack exchange,提问作者wister13
相关产品推荐
相关产品推荐

