如果我在类型和值中输入了错误的值,我希望我的程序显示错误消息。
错误消息在类型上运行良好,但它不适用于该值。怎么了?
Map<String, String> Heart = new HashMap();
Heart.put("A", "Heart");
Heart.put("J", "Heart");
Heart.put("Q", "Heart");
Heart.put("K", "Heart");
Heart.put("2", "Heart");
Heart.put("3", "Heart");
Heart.put("4", "Heart");
Heart.put("5", "Heart");
Heart.put("6", "Heart");
Heart.put("7", "Heart");
Heart.put("8", "Heart");
Heart.put("9", "Heart");
Heart.put("10", "Heart");
System.out.print("Value: ");
val = input.next();
System.out.print("Type: ");
typ = input.next();
if(typ.equals("Heart")){
if(Heart.containsKey(val)&&Heart.containsValue(typ)){
System.out.println(val+" of "+typ+" is successfully added.\n");
}
if(Heart.containsKey(val)==false){
try{
throw new InvalidValueException();
}
catch(InvalidValueException e){
System.out.println(e.getMessage()+" 2-10, AJQK.\n");
}
}
else if(Heart.containsValue(typ)==false){
try{
throw new InvalidValueException();
}
catch(InvalidValueException e){
System.out.println(e.getMessage()+" HDSC\n");
}
}
}
答案 0 :(得分:1)
如果所有密钥的值相同,则应创建List<String>
种类型而不是Map
。然后你可以让用户输入类型并检查List#contains
类型是否合适。
如果它只是一个例子,那么每种类型都会有不同的值,
您只需throw
Exception
即可发送消息,无需捕获并打印消息。您可以在构造函数中传递消息。
如果type
为值且val
为key
,则typ.equals("Heart")
检查是多余的,因为您正在检查Heart.containsValue(typ)
。
因此,如果您的typ
不是Heart
,那么您将无法输入条件,如果if(Heart.containsKey(val)==false){
不是typ
,则Heart
永远不会成立1}}。
if(typ.equals("Heart"))
支票。最好使用小写的命名约定起始变量名。