Java字符串自拼接无效果求助:程序仅输出初始值'test'
问题修复方案
你的代码存在两个关键问题,导致拼接操作没有产生预期效果:
substring调用错误:input.substring(current, current)会返回空字符串,因为起始索引和结束索引相同,相当于截取了一段长度为0的内容。要获取当前索引对应的字符,应该使用input.substring(current, current + 1),或者更高效的String.valueOf(input.charAt(current))。循环边界错误:字符串的索引范围是
0到length-1,你的循环条件current <= length会让current最终等于字符串长度,此时调用substring会触发StringIndexOutOfBoundsException。正确的条件应该是current < length。
另外,输出语句放在循环内部完全没必要,循环结束后统一打印结果即可。
修正后的代码
package chucknorris; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Input string:"); String input = scanner.nextLine(); int length = input.length(); String output = "test"; for (int current = 0; current < length; current++) { String letter = String.valueOf(input.charAt(current)); output += letter + " "; } System.out.println(output); } }
性能优化建议
由于Java字符串是不可变对象,每次使用+拼接都会创建新的字符串实例,频繁拼接时性能较低。建议改用StringBuilder来提升效率:
package chucknorris; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Input string:"); String input = scanner.nextLine(); StringBuilder output = new StringBuilder("test"); for (int current = 0; current < input.length(); current++) { output.append(input.charAt(current)).append(" "); } System.out.println(output); } }
内容的提问来源于stack exchange,提问作者noodlegamer76
相关产品推荐
相关产品推荐

