如何修改VSCode默认设置,使scanner.nextDouble()识别<.>作为小数点
解决Scanner.nextDouble()仅接受逗号作为小数点的问题
问题根源在于Scanner.nextDouble()的小数分隔符规则依赖JVM的区域设置,而非VSCode的界面语言设置,所以修改VSCode区域设置无法解决问题。以下是三种可行的解决方法:
方法1:在代码中显式指定Locale
直接在创建Scanner时强制使用英文区域(以.作为小数点),代码示例:
import java.util.Locale; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in).useLocale(Locale.US); System.out.print("输入小数:"); double input = scanner.nextDouble(); System.out.println("结果:" + input); scanner.close(); } }
这样Scanner会按照英文区域的格式解析输入,支持.作为小数点。
方法2:通过JVM启动参数全局设置
修改VSCode的launch.json配置,添加JVM参数强制指定区域:
- 打开VSCode的「运行和调试」面板,点击「创建launch.json文件」(若已有则直接编辑)
- 在对应配置项中添加
vmArgs参数:
{ "version": "0.2.0", "configurations": [ { "type": "java", "name": "Launch Main", "request": "launch", "mainClass": "你的主类路径", "vmArgs": "-Duser.language=en -Duser.region=US" } ] }
此方法会让整个JVM进程使用英文区域设置,所有Scanner实例都会遵循该规则。
方法3:修改系统区域设置
如果希望全局生效(所有Java程序都使用.作为小数点),可以修改系统的区域格式:
- Windows:设置 → 时间和语言 → 语言和区域 → 其他日期、时间和区域设置 → 区域 → 其他设置 → 数字选项卡,将小数点符号改为
. - macOS:系统设置 → 通用 → 语言与地区 → 区域格式,选择「美国」
- Linux:通过系统设置将区域格式改为
en_US.UTF-8
内容的提问来源于stack exchange,提问作者Seng Gie Chung
相关产品推荐
相关产品推荐

