为什么我会遇到输入不匹配异常?
问题描述:
我有这段代码,它返回一个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)
答
输入匹配异常来自试图读取错误的类型。 Java正在输入您输入的数字,而不是将它作为int读取。
我不正是你怎么输入,但在一般情况下,你使用
useDelimiter("\\n")
这是造成一些怪事。我不知道你为什么拥有它。我只是将该行更改为
Scanner scanner = new Scanner(System.in);
Java本身处理新行。
它说错误是在哪一行?您可能将非int整数转换为x – Gary
如果出现* input *相关异常,您应该真正显示输入。 – RealSkeptic
@RealSkeptic谢谢,我做到了! – Vishal