You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 02:40:17