java - Java 中是否有一个函数允许您将字符串转换为 Int ,考虑到字符串中包含您想要忽略的字符?

标签 java java.util.scanner

我正在为大学类(class)做一个项目,我需要读取一个 int 的输入,后跟一个“+”(例如)“2+”的形式。

但是,当使用 nextInt() 时,它会抛出 InputMismatchException

解决方法是什么,因为我只想存储 int,但“用户”输入一个 int 后跟字符“+”?

我已经尝试了很多东西,包括 parseInt 和 valueOf,但似乎都不起作用。

我应该手动执行并逐个字符地分析吗?

预先感谢您的帮助。

编辑:只是为了清除它。用户输入的所有内容都是 Int 后跟一个 + 。该项目的主题是做一些以 Netflix 节目为主题的事情。该参数将用作电影的年龄分级。但是,我不想将整个字符串存储在电影中,因为这会使检查用户是否有资格观看某部电影变得更加困难。

更新:设法使子字符串进入 parseInt 工作

        String x = in.nextLine();
        x = x.substring(0, x.length()-1);
        int i = Integer.parseInt(x);

感谢您的帮助:)

最佳答案

尝试 Scanner#useDelimiter():

try(Scanner sc=new Scanner(System.in)){
    sc.useDelimiter("\\D"); /* use non-digit as separator */
    while(sc.hasNextInt()){
        System.out.println(sc.nextInt());
    }
}

输入:2+33-599

输出:

2
33
599

或与您当前的代码 x = x.substring(0, x.length()-1); 使其更精确,请尝试改为:x = x.replaceAll("\\D","");

关于java - Java 中是否有一个函数允许您将字符串转换为 Int ,考虑到字符串中包含您想要忽略的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50483498/

相关文章:

java - 如何为用户输入(单词)分配一个要在代码中使用的整数值

java - 坚持创建一个新对象

java - 该程序未记录第一个数组,设置为空 - Java

Java - 多次使用扫描仪

java - Android - 如何高效地在 TextView 中加载大量文本?

Java:时区为什么不同的时区以毫秒为单位给出相同的值

java - 应用程序因 XML 文件而停止

java - 使用 callablestatement 或 jdbctemplate 进行 mysql 插入的字符编码

java - ArrayList 排序锦标赛名次

java - 解析文件以匹配特定模式并返回具有不同模式的后续行