用 false containsValue(Hashmap) 捕获
Catch with false containsValue(Hashmap)
如果我在类型和值中输入了错误的值,我希望我的程序显示一条错误消息。
错误消息对类型有效,但对值无效。怎么了?
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");
}
}
}
如果所有键的值都相同,则应创建 List<String>
类型而不是使用 Map
。然后你可以只允许用户输入类型并检查是否 List#contains
类型。
如果这只是一个示例,那么您将对每种类型有不同的值,
你可以 throw
Exception
与消息不需要捕获和打印消息。您可以在 constructor.
中传递消息
如果 type
是值并且 val
是 key
,那么 typ.equals("Heart")
检查是多余的,因为您正在检查 Heart.containsValue(typ)
.
因此,如果您的 typ
不是 Heart
,您将无法输入条件,如果 typ
,则 if(Heart.containsKey(val)==false){
永远不会为真不是 Heart
.
- 您应该删除
if(typ.equals("Heart"))
检查。
最好遵循命名规则,以小写开头的变量名。
如果我在类型和值中输入了错误的值,我希望我的程序显示一条错误消息。
错误消息对类型有效,但对值无效。怎么了?
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");
}
}
}
如果所有键的值都相同,则应创建 List<String>
类型而不是使用 Map
。然后你可以只允许用户输入类型并检查是否 List#contains
类型。
如果这只是一个示例,那么您将对每种类型有不同的值,
你可以
throw
Exception
与消息不需要捕获和打印消息。您可以在 constructor. 中传递消息
如果
type
是值并且val
是key
,那么typ.equals("Heart")
检查是多余的,因为您正在检查Heart.containsValue(typ)
.因此,如果您的
typ
不是Heart
,您将无法输入条件,如果typ
,则if(Heart.containsKey(val)==false){
永远不会为真不是Heart
.- 您应该删除
if(typ.equals("Heart"))
检查。
最好遵循命名规则,以小写开头的变量名。