Java提取指定字符首出现后剩余字符串功能异常排查
问题解决:输出指定字符首次出现后的剩余字符串
你的代码存在几个关键问题,导致无法得到预期结果:
1. 未打印处理后的结果
你在else块中已经计算出了目标字符串,但没有将其输出到控制台,所以看不到最终结果。
2. 字符匹配的严谨性不足
你用String类型存储输入的字符,并用sentence.indexOf(String)查找位置。虽然单个字符的String也能匹配,但如果用户输入多个字符(比如输入"wo"),会导致匹配逻辑不符合“指定单个字符”的需求。更合适的方式是用char类型存储单个字符,并用sentence.indexOf(char)精准查找位置。
3. 变量复用导致语义混乱
你将处理后的结果赋值给了原本存储输入字符的letter变量,这会让变量的含义混淆,建议使用新变量存储结果。
修正后的代码
import java.util.Scanner; class Program { public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.print("Enter a sentence: "); String sentence = sc.nextLine(); System.out.print("Enter a letter: "); // 只取输入的第一个字符,确保处理单个字符 char targetChar = sc.next().charAt(0); int charIndex = sentence.indexOf(targetChar); if (charIndex == -1) { System.out.println("The letter does not exist in the sentence."); } else { String result = sentence.substring(charIndex + 1); System.out.println(result); } sc.close(); } }
测试验证
输入句子:How are you?
输入字符:a
输出:re you?
输入句子:hello world
输入字符:w
输出:orld
额外说明
- 使用
sc.next().charAt(0)可以确保只获取输入的第一个字符,避免用户误输入多字符的情况。 - 单独用
charIndex存储查找结果,避免重复调用indexOf方法,提升代码效率。
内容的提问来源于stack exchange,提问作者Sudharshan S
相关产品推荐
相关产品推荐

