线程“主”java.util.InputMismatchException nextDouble() 错误中的异常? [复制]
Posted
技术标签:
【中文标题】线程“主”java.util.InputMismatchException nextDouble() 错误中的异常? [复制]【英文标题】:Exception in thread "main" java.util.InputMismatchException nextDouble() error? [duplicate] 【发布时间】:2016-03-21 11:26:17 【问题描述】:CitireFisier.java
public class CitireFisier
public static void main(String[] args)
File f = new File("fisier.txt");
Scanner scn = null;
try
scn = new Scanner(f);
catch (FileNotFoundException e)
e.printStackTrace();
int size = scn.nextInt();
System.out.println("val is " + size);
double var = scn.nextDouble();
System.out.println("val is " + var);
输出
val is 3
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
fisier.txt
3
0.1 0.7 0.2 init g
0.0 0.0 1.0 g y
0.0 0.0 1.0 g y
nextDouble()
收到错误但 0.1 是 double
!
【问题讨论】:
【参考方案1】:如果您的语言环境使用逗号作为小数分隔符,则 0.1 不是双精度数。
要解决此问题,请像这样实例化您的 Scanner:
scn = new Scanner(f).useLocale(Locale.US);
【讨论】:
是的,这是一个明智的答案。法语、德语和意大利语使用逗号,在使用这些语言环境时会中断。 谢谢!它适用于 scn = new Scanner(f).useLocale(Locale.US);【参考方案2】:我猜问题取决于所使用的 Java 版本,因为在我的 Java 版本 (Java(TM) SE 运行时环境 (build 1.8.0_74-b02)) 中,我没有收到错误。不过,也许这对您的版本有所帮助(如问题的 cmets 中所述):
public static void main(String[] args)
File f = new File("fisier.txt");
Scanner scn = null;
try
scn = new Scanner(f);
catch (FileNotFoundException e)
e.printStackTrace();
int size = scn.nextInt();
System.out.println("val is " + size);
// not needed in my Java Version
scn.nextLine();
double var = scn.nextDouble();
System.out.println("val is " + var);
编辑:
你可能还想看看Trouble using nextInt and nextLine()
【讨论】:
以上是关于线程“主”java.util.InputMismatchException nextDouble() 错误中的异常? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Android 异步操作Android 线程切换 ( 判定当前线程是否是主线程 | 子线程中执行主线程方法 | 主线程中执行子线程方法 )
C++怎么在主线程中使用子线程的数据? 比如说主线程中有一个数组,如何在子线程中调用这个数组
EventBus事件通信框架 ( 发送事件 | 判断发布线程是否是主线程 | 子线程切换主线程 | 主线程切换子线程 )