Java实现句子字符反转功能运行后输出空白是什么原因?
问题根因
你的代码出现空白输出的核心原因是for循环的终止条件设置错误:
原代码循环条件为x < 1,初始x赋值为字符串最后一位的索引total - 1,只要输入的字符串长度≥2,初始x的取值就≥1,完全不满足x < 1的触发条件,循环一次都不会执行,拼接用的invertedsentence始终是空字符串,最终输出自然为空白。
就算输入长度为1的字符串,这个条件也只能覆盖单字符场景,无法适配所有长度的输入。
修复方案
将for循环的终止条件修改为x >= 0即可,因为字符串的索引范围是0 ~ 总长度-1,倒序遍历需要从最后一位一直走到索引为0的第一位,修正后的核心逻辑代码如下:
for ( x = total-1 ; x >= 0 ; x--){ invertedsentence = invertedsentence + sentence.charAt(x); }
如果需要优化拼接效率,也可以用StringBuilder代替字符串直接拼接,完整的优化后代码参考:
import java.util.Scanner; public class ReverseSentence { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Enter your sentence:"); String sentence = input.nextLine(); StringBuilder invertedSb = new StringBuilder(); for (int x = sentence.length() - 1; x >= 0; x--) { invertedSb.append(sentence.charAt(x)); } System.out.println(invertedSb.toString()); input.close(); } }
内容的提问来源于stack exchange,提问作者CopperCleric
相关产品推荐
相关产品推荐

