我正在为大学类(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/