如何读取循环java中的两个输入

如何读取循环java中的两个输入,java,hashmap,java.util.scanner,Java,Hashmap,Java.util.scanner,我想用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(

我想用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);
    }
  }
}

任何帮助都会很好,谢谢你需要验证你的输入以确保你得到你想要的类型
IT
不是
int
,因此当然
int size subnet=scanner.nextInt()将失败

至少,试一试是个好主意

int sizeSubnet;
try{
    sizeSubnet = scanner.nextInt();
} catch () {
    sizeSubnet = 0;
}

如果您希望
IT
应该是
nameSubnet
,那么您需要使用额外的
scanner.nextLine()

此处出现异常的原因是
scanner.nextInt()
返回一个
int
,在运行时传递,它是
java.lang.String
的类型。
类型为
int
的变量不能存储
String

AFAIK,
IT
不是
int
我给它一个字符串“IT”作为名称,我希望代码能做的是,首先询问字符串,然后询问整数,Size认为这会有助于我首先分配nameSubnet,而不是integerType在按enter键之前,先输入“IT”。您在输出中没有给出任何名称。伙计们,我想首先通过字符串nameSubnet=scanner.nextLine()来分配nameSubnet;这就是为什么我给了它字符串“IT”“@azdoudyoussef那么你应该交换输入的位置。@azdoudyoussef这就是我更新答案的原因——阅读链接以了解为什么需要添加额外的行。所发生的事情是,您没有等待用户的输入,因此您键入的第一件事不是读取名称,而是读取大小。谢谢@senschen您说得对Java scanner不等待我的输入,这就是SE抛出该异常的原因。当您第二次跟踪输入时,该异常是否会出现?当您尝试从控制台获取字符串输入时,该问题通常会出现。因为字符串终止符号“\n”保留在缓冲区中。因此,当控制器第二次出现时,编译器认为“\n”是用户提供的输入,它接受“\n”作为输入,不等待用户输入。在进行第二次输入之前,请尝试刷新缓冲区,您将不会再次遇到此问题。感谢friend@MehrajMalik是的,它不会等待用户输入。这是一个很好的解释
int sizeSubnet;
try{
    sizeSubnet = scanner.nextInt();
} catch () {
    sizeSubnet = 0;
}