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

Java代码问题:尝试打印倒数第二个单词却仅输出"L",求排查修复

问题排查与修复

你的代码输出仅单个字符的核心问题是while循环内的索引k被重复初始化:每次进入while循环都把k设为0,导致每个字符都覆盖word[0],最终数组里只存了倒数第二个单词的第一个字符(也就是love的l)。另外打印时遍历整个25长度的数组,前面都是空字符,所以最终只看到那个有效字符。

修复后的代码(保留原思路)

把k的初始化移到while循环外面,确保每次循环k能递增存储字符;同时打印时只输出有效字符,避免空字符干扰:

public class secToLast{
    public static void main(String args[]){
        String gg = "I love India";
        int len = gg.length();
        char[] word = new char[25];
        for(int i = len-1 ; i>=0; i--){ 
            if(gg.charAt(i)==' '){
                int j = i-1;
                int k = 0; // 将k的初始化移到while循环外
                // 存储单词到数组
                while(j>=0 && gg.charAt(j) != ' '){
                    word[k] = gg.charAt(j);
                    j = j-1;
                    k = k+1;
                }
                break;
            }
        }
        // 只打印数组中的有效字符
        for(int p = word.length-1; p>=0; p--){
            if(word[p] != '\u0000'){ // 判断是否为默认空字符
                System.out.print(word[p]);
            }
        }
    }
}

更简洁的实现方式(推荐)

利用Java字符串API可以更高效地实现需求,无需手动操作数组和索引:

public class secToLast{
    public static void main(String args[]){
        String gg = "I love India";
        // 定位最后一个空格的位置
        int lastSpace = gg.lastIndexOf(' ');
        // 从最后一个空格前的位置,定位倒数第二个空格
        int secondLastSpace = gg.lastIndexOf(' ', lastSpace - 1);
        // 截取两个空格之间的子串,即倒数第二个单词
        String secondLastWord = gg.substring(secondLastSpace + 1, lastSpace);
        System.out.println(secondLastWord);
    }
}

如果要兼容多空格的情况,也可以用分割字符串的方式:

public class secToLast{
    public static void main(String args[]){
        String gg = "I love India";
        // 按一个或多个空格分割字符串
        String[] words = gg.split("\\s+");
        if(words.length >= 2){
            System.out.println(words[words.length - 2]);
        }
    }
}

内容的提问来源于stack exchange,提问作者Aditya Sahu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 00:58:29