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

Java如何使用Scanner读取同一行中的两种不同数据类型

问题原因

你当前的代码存在读取逻辑错误:

Scanner scanner = new Scanner(System.in);
String befehl = scanner.nextLine();
double wert = scanner.nextDouble();

scanner.nextLine()会直接把一整行输入(比如示例中的Drive 5完整内容)全部读取并赋值给befehl,后续执行scanner.nextDouble()时会等待你输入第二行内容,无法读取同一行内的数字。

解决方法

共有两种常用实现方案:

  • 方案1:直接使用Scanner默认分隔规则读取
    利用Scanner默认以空白字符为分隔的特性直接读取,代码最简洁:
Scanner scanner = new Scanner(System.in);
// 读取第一段非空白字符作为字符串值
String befehl = scanner.next();
// 自动跳过中间的空白字符,读取后续的浮点数值
double wert = scanner.nextDouble();

只要输入的两个值在同一行用空格分隔,即可正常读取。

  • 方案2:先读取整行再拆分处理
    如果需要自定义分隔规则、或者要做输入合法性校验,可先读取完整行再拆分处理:
Scanner scanner = new Scanner(System.in);
// 读取完整的一行输入
String inputLine = scanner.nextLine();
// 按空白字符拆分,支持多个空格分隔的场景
String[] inputParts = inputLine.split("\\s+");
String befehl = inputParts[0];
double wert = Double.parseDouble(inputParts[1]);

这种方案可额外扩展校验逻辑,比如判断拆分后的数组长度是否为2、第二个值是否可正常转为浮点型,避免非法输入导致程序崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:36:04