Java 扫描仪类输入不匹配异常和警告
运行此程序时遇到问题。该程序接受一个表达式,如A=7,并将变量放入一个字符串和一个映射容器中的数字7。如果我没有正确解析导致错误的字符串,或者由于其他原因,我就不会这样做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)
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