java - 整数输入中的下划线导致java出错

标签 java

<分区>

Java Standard Editions docs 中所述, 任意数量的下划线字符 (_) 可以出现在数字文字中数字之间的任何位置,例如:- int number = 100_000;

出于好奇,我尝试将下划线分隔值 (100_000) 输入到需要整数的输入中。代码:

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int basicAmount = sc.nextInt();
    }
}

这导致了一般性错误消息。

所以我的问题是:

  1. 为什么会这样?为什么不允许我输入包含下划线的数值?
  2. 有没有办法允许用户输入带有下划线的数值?

最佳答案

您引用的文档是关于 Java 源代码的。它说这样的事情是可能的:

int i = 123_456_789; // same as int i = 123456789;

Scanner读取的文本不是Java源代码。

在这种情况下,您应该阅读的相关文档是 Scanner.nextInt ,它将带您到指定的可接受格式 here 。很明显 Scanner.nextInt 不接受带下划线的数字。

读取带有下划线的数字的一种简单方法是只读取一个标记,然后删除其中的所有下划线:

int input = Integer.parseInt(sc.next().replaceAll("_", ""));

关于java - 整数输入中的下划线导致java出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72564521/

相关文章:

java - 在 Windows 计算机上使用 Java Swing SystemLookAndFeel 会导致带有 JTextPanes 的 CachedPainter 中出现内存泄漏

java - Log4j 自定义附加程序未调用

java - 如何启用Zabbix tomcat每秒接收字节数项?

java - 关于 JPEG MCU 的详细信息

java - getRuntime().exec(String[]) 函数的行为与 getRuntime().exec(String) (Android) 不同

Java外部类静态初始化

java - 如何在不使用表单的情况下将数据从 JSP 页面传递到 Java Servlet?

Java 运行时错误 SIGBUS iText

java - `javax.inject` 在 Spring Boot 中可用吗?

java - 当消息大小非常大(例如〜100mb)时,生产者(java客户端)的性能会下降