
本文讲解如何使用 java 的 scanner 类实现多个数值在同一行输入(如数量与单价并排输入),避免默认换行导致的格式错乱,并提供安全、健壮的输入处理方案。
在 Java 控制台程序中,Scanner.nextInt() 和 Scanner.nextDouble() 等方法不会消费输入末尾的换行符(\n),且它们默认以空白字符(空格、制表符、回车)为分隔符。因此,只要用户在一行内用空格或 Tab 分隔多个值,Scanner 就能正确读取——无需额外换行或特殊处理。
✅ 正确做法:保持 System.out.print() 不换行,引导用户在同一行输入多个值
修改你的代码如下:
System.out.print("Enter the quantities and price of " + phone1 + ": ");
qty = sc.nextInt(); // 用户输入:1000 1399.99 ← 两个值在同一行,用空格分隔
price = sc.nextDouble(); // Scanner 自动跳过中间空白,读取下一个数值运行效果:
函数是一组语句一起执行任务。在MATLAB中,函数定义在单独的文件。文件函数的文件名应该是相同的。 函数操作在自己的工作空间,它也被称为本地工作区,独立的工作区,在 MATLAB 命令提示符访问,这就是所谓的基础工作区的变量。函数可以接受多个输入参数和可能返回多个输出参数 。 MATLAB是MathWorks公司开发的一种编程语言。它最初是一个矩阵的编程语言,使线性代数编程很简单。它可以运行在交互式会话和作为批处理作业。有需要的朋友可以下载看看
Enter the quantities and price of iPhone 10: 1000 1399.99
⚠️ 重要注意事项:
- 不要在 nextInt() 后调用 sc.nextLine() 再读 nextDouble() —— 这会误吞掉用户输入的换行符,导致后续输入异常;
-
确保用户严格按空格/TAB分隔输入(如 1000
1399.99),否则 nextDouble() 会抛出 InputMismatchException; - 更健壮的写法(推荐用于生产环境):统一用 nextLine() 读整行,再用 String.split() 解析:
System.out.print("Enter the quantities and price of " + phone1 + ": ");
String line = sc.nextLine().trim();
String[] parts = line.split("\\s+", 2); // 最多切两段,防止价格含空格时报错
if (parts.length >= 2) {
qty = Integer.parseInt(parts[0]);
price = Double.parseDouble(parts[1]);
} else {
System.err.println("Error: Please enter quantity and price separated by space.");
}? 小技巧:若想提升用户体验,可在提示语末尾加一个显眼分隔符,例如:
System.out.print("Enter quantity and price for " + phone1 + " (e.g., 1000 1399.99): ");总结:Java Scanner 天然支持单行多值输入,关键在于理解其以空白符分词的机制,并合理设计提示语与输入校验逻辑——既简洁高效,又具备容错能力。









