我试图评估一只手,看看他们是否有一对,我觉得这是对的,但我一直都会遇到错误。关于我做错什么的任何想法?
Boolean isSuccess = true;
if(aMap.size() != bMap.size())
{
return false;
}
aMap.entrySet().forEach(entry -> {
AKey aKey = entry.getKey();
BValue bValue = bMap.get(aKey);
if(bValue == null)
return;
AValue aValue = entry.getValue();
if(!aValue.getClosed().equals(bValue.getClosed()))
return;
if(!aValue.getClosedToArrival().equals(bValue.getClosedToArrival()))
return;
if(!aValue.getClosedToDeparture().equals(bValue.getClosedToDeparture()))
return;
if(!aValue.getLengthOfStayArrival().equals(bValue.getLengthOfStayArrival()))
return;
});
return isSuccess;
答案 0 :(得分:0)
我能看到的第一个明显的错误是你在这里比较第一张卡片本身:
for(int j = 0; j < values.length; j++){
for(int k = 0; k < cards.length; k++){
如果等于j,则不应验证索引k。
其次,当您打算创建一个包含手的String数组时,为什么在比较中使用变量“hand”?
values[j].equals(cards[k].toString())
你可以写:
values[j].equals(values[k])
我不认为它对任何错误负责,但更容易理解。
最后,你的柜台是假的。根据定义,一对具有相同值的两张牌。因此,您必须检查一个值是否仅存在两次(即1次相等)。
所以你会:
for(int j = 0; j < values.length; j++){
for(int k = 0; k < cards.length; k++){
if(k!=j){
if(values[j].equals(values[k]))
counter ++;
}
}
if (counter ==1 ) //Counter==1 means the a value matched with an other value in your hand only once, involving one pair.
return true;
else counter = 0;
}
return false;
答案 1 :(得分:-1)
String[] values = new String[5];
应该是
String[] values = new String[cards.length];
但是,最好不要使用values
,因为它几乎是cards
的副本。