Java实验:移除非字母字符程序仅返回首个单词问题求助
问题解决:只能处理第一个单词的原因及修复
问题根源
你的代码里用了scnr.next()来获取输入,这个方法默认以空白字符(空格、换行等)作为分隔符,只会读取到第一个空格之前的内容。比如输入-Hello, 1 world$!时,uInput只会拿到-Hello,,后续的1 world$!根本没被读进程序,所以处理后只输出Hello。
修复方案
把读取输入的代码换成scnr.nextLine(),这个方法会读取整行输入,包含空格在内的所有字符,这样就能处理完整的输入内容了。另外,循环里直接用String拼接字符效率较低,推荐用StringBuilder来优化性能。
修改后的代码
import java.util.Scanner; public class LabProgram { public static void main(String[] args) { Scanner scnr = new Scanner(System.in); // 改用nextLine读取整行输入 String uInput = scnr.nextLine(); // 用StringBuilder优化字符串拼接 StringBuilder result = new StringBuilder(); for (int i = 0; i < uInput.length(); i++) { char c = uInput.charAt(i); if (Character.isLetter(c)) { result.append(c); } } System.out.println(result.toString()); } }
测试验证
输入-Hello, 1 world$!时,程序会读取整行内容,过滤非字母字符后输出Helloworld,符合实验要求。
内容的提问来源于stack exchange,提问作者aLop
相关产品推荐
相关产品推荐

