我怎样才能在循环java中读取两个输入

时间:2016-03-28 12:06:48

标签: java hashmap java.util.scanner

我想在一个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)

任何帮助都会非常感谢

2 个答案:

答案 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