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

时间:2015-06-20 16:44:30

标签: java exception

我有这个代码,它返回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)

1 个答案:

答案 0 :(得分:0)

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

我并不完全是你输入的方式,但一般来说,你使用

useDelimiter("\\n")

这引起了一些奇怪的现象。我不知道你为什么拥有它。我只想将那一行改为

Scanner scanner = new Scanner(System.in);

Java自己处理新行。