Java 扫描仪类输入不匹配异常和警告

Java 扫描仪类输入不匹配异常和警告,java,exception,warnings,java.util.scanner,string-parsing,Java,Exception,Warnings,Java.util.scanner,String Parsing,运行此程序时遇到问题。该程序接受一个表达式,如A=7,并将变量放入一个字符串和一个映射容器中的数字7。如果我没有正确解析导致错误的字符串,或者由于其他原因,我就不会这样做 Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:909) at java.util.Scanner.next(Scanner.java:1530)

运行此程序时遇到问题。该程序接受一个表达式,如A=7,并将变量放入一个字符串和一个映射容器中的数字7。如果我没有正确解析导致错误的字符串,或者由于其他原因,我就不会这样做

    Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:909)
    at java.util.Scanner.next(Scanner.java:1530)
    at java.util.Scanner.nextInt(Scanner.java:2160)
    at java.util.Scanner.nextInt(Scanner.java:2119)
    at Commander.main(Commander.java:21)
此外,我得到以下警告消息,这实际上是第一次

Note: Commander.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
代码

import java.util.Scanner;
import java.util.Map;
import java.util.HashMap;

public class Commander
{
    public static void main(String[] args)
    {
        Map<String,Integer> expression = new HashMap();

        Scanner sc = new Scanner(System.in);

        String Variable , assignmentOperator;
        int Value;

        while(sc.hasNextLine())
       {

            Variable = sc.nextLine();
            assignmentOperator = sc.nextLine();
            Value = Integer.parseInt(sc.nextInt());

            expression.put(Variable,Value);

            for(String key: expression.keySet())
                System.out.println(key + " - " + expression.get(key));
        }
    }
}

java使用未经检查或不安全的操作。因为你在HashMap之后失踪了

Map<String,Integer> expression = new HashMap<>();
如果下一个标记与有效的整数正则表达式不匹配或超出范围,则sc.nextInt可能会导致InputMismatchException。这里是更新的代码

import java.util.Scanner;
import java.util.Map;
import java.util.HashMap;

public class Commander
{
    public static void main(String[] args)
    {
        Map<String,Integer> expression = new HashMap<>();

        Scanner sc = new Scanner(System.in);

        String Variable , assignmentOperator;
        int Value;

        while(sc.hasNextLine())
       {

            Variable = sc.nextLine();
            assignmentOperator = sc.nextLine();
            Value = Integer.parseInt(String.valueOf(sc.nextInt()));

            expression.put(Variable,Value);

            for(String key: expression.keySet())
                System.out.println(key + " - " + expression.get(key));
        }
    }
}

它现在说找不到类Int?您的意思是在Value=Integer.parseIntsc.nextInt;?处出现编译错误?本质上,我想做的是输入一个命令,比如a=7,然后我想使用Scanner类解析它。因此,A,变量被存储为映射的键,7作为值。如果相关,我将从.cmd文件提交命令。您将使用2行,然后使用一个int,而不是后面跟着int的2个标记。因此变量将包含A=7