我想用scanner类读入for循环中的两个变量,然后将它们保存在一个集合中。代码如下:
public class Example{
public static void main(String args[]){
Map<String,Integer> mapSub = new HashMap<String,Integer>();
for (int i=0;i<nbSubnet;i++){
System.out.println("Enter name of the subnet "+i+" : ");
String nameSubnet = scanner.nextLine();
System.out.println("Enter the size of the subnet "+i+" : ");
int sizeSubnet = scanner.nextInt();
mapSub.put(nameSubnet, sizeSubnet);
}
}
}
但我在运行代码之后得到了这个例外:
Enter name of the subnet 0 :
Enter the size of the subnet 0 :
IT
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 view.Main.main(Main.java:60)
任何帮助都很好谢谢
2条答案
按热度按时间mtb9vblg1#
你需要验证你的输入,以确保你得到你想要的类型。
IT
不是一个int
,那当然int sizeSubnet = scanner.nextInt();
会失败的。至少,试一试是个好主意。
如果你期待的话
IT
应该是nameSubnet
,然后您需要确保扫描仪等待带有额外scanner.nextLine();
.1cklez4t2#
例外的原因是
scanner.nextInt();
返回一个int
,并在运行时传递java.lang.String
. 和类型的变量int
无法存储String