我想在一个for循环中读取两个带有scanner类的变量然后将它们保存在一个集合中地图代码如下:
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)
任何帮助都会非常感谢
答案 0 :(得分:0)
您需要验证输入以确保获得所期望的类型。 IT
不是int
,因此int sizeSubnet = scanner.nextInt();
当然会失败。
至少,尝试/捕捉是一个好主意。
int sizeSubnet;
try{
sizeSubnet = scanner.nextInt();
} catch () {
sizeSubnet = 0;
}
如果您希望IT
应为nameSubnet
,那么您需要make sure the scanner waits for the input加上scanner.nextLine();
。
答案 1 :(得分:0)
此处出现异常的原因是scanner.nextInt();
返回int
,并且在运行时您传递的是 IT ,类型为java.lang.String
。
并且int
类型的变量无法存储String