为什么我会遇到输入不匹配异常?

问题描述:

我有这段代码,它返回一个InputMismatchException。但我不明白为什么! 下面是代码:为什么我会遇到输入不匹配异常?

import java.io.*; 
import java.util.*; 
import java.lang.*; 

class Test 
{ 
    public static void main(String a[]) 
    { 
     Scanner scanner = new Scanner(System.in).useDelimiter("\\n"); 
     ArrayList<String> arr = new ArrayList<String>(); 
     arr.add(scanner.next()); 
     int x = scanner.nextInt(); 
     Collections.sort(arr); 
     String _converted = arr.toString(); 
     String smallest,largest; 
     int l = _converted.length()-x; 
     int s = _converted.length(); 
     smallest = _converted.substring(0,x); 
     largest = _converted.substring(l,s); 
     System.out.println(smallest); 
     System.out.println(largest); 
    } 
} 

的代码进行排序的输入字符串,然后输出第一n个字和最后n个字,其中n是另一输入整数。

这里的输入:

welcometojava 
3 

和错误:

Exception in thread "main" java.util.InputMismatchException 
    at java.util.Scanner.throwFor(Unknown Source) 
    at java.util.Scanner.next(Unknown Source) 
    at java.util.Scanner.nextInt(Unknown Source) 
    at java.util.Scanner.nextInt(Unknown Source) 
    at dd.main(dd.java:12) 
+0

它说错误是在哪一行?您可能将非int整数转换为x – Gary

+0

如果出现* input *相关异常,您应该真正显示输入。 – RealSkeptic

+0

@RealSkeptic谢谢,我做到了! – Vishal

输入匹配异常来自试图读取错误的类型。 Java正在输入您输入的数字,而不是将它作为int读取。

我不正是你怎么输入,但在一般情况下,你使用

useDelimiter("\\n") 

这是造成一些怪事。我不知道你为什么拥有它。我只是将该行更改为

Scanner scanner = new Scanner(System.in); 

Java本身处理新行。