我在查找大小为五的字符串时遇到问题。因此,只能有两对。对于我找到的每一对,我应该将得分提高2分。 这是我到目前为止所做的,但它是不正确的。
String temp = "4 5 4 3 3";
String tempLine = temp.replaceAll(" ", "");
String[] hand = temp.split(" ");
for(int i = 0; i < hand.length; i++)
{
if(hand[i].equals(tempLine.substring(0, 1)) && i !=0 )
score += 1;
if(hand[i].equals(tempLine.substring(1, 2)) && i != 1 )
score += 1;
if(hand[i].equals(tempLine.substring(2, 3)) && i!= 2 )
score += 1;
if(hand[i].equals(tempLine.substring(3, 4)) && i!= 3)
score += 1;
if(hand[i].equals(tempLine.substring(4)) && i != 4)
score += 1;
}
编辑:我试图在手中找到具有相似值的对,例如4将是此手中找到的一对
答案 0 :(得分:2)
首先对手进行排序,然后循环寻找hand [i] == hand [i-1]。请注意,你可能需要稍微聪明一点才能计算两次3s或4s的数量,但这应该可以让你开始。
答案 1 :(得分:2)
创建一个实际的Hand
课程,不要使用String
来代表您的卡片。 Card
的等级和套装适合enum
:
class Card {
enum Suite { ... };
enum Rank { ... };
private final Suite s;
private final Rank r;
// ...
}
class Hand {
private Card[] cards;
// ...
}
然后对Card[]
课程中的Hand
进行排序,以便更轻松地进行评估。
查看Oracle的enum
教程,其中有一个卡片示例:http://download.oracle.com/javase/1.5.0/docs/guide/language/enums.html
答案 2 :(得分:1)
我认为这符合您的目标。
char[] hand = {'a','b','c','b','c'};
/* sort the hand to ensure pairs are next to each other */
for(int x=0;x<hand.length - 1;x++){
for(int y=(x+1);y<hand.length;y++){
if((int)hand[x] > (int)hand[y]){
char temp = hand[y];
hand[y] = hand[x];
hand[x] = temp;
}
}
}
int score = 0;
for(int x=0;x<hand.length - 1;x++){
if(hand[x] == hand[x + 1]){
score++;
/*if you want to make sure you only get pairs
add an "x++;" that way it'll skip over the
letter you just tested*/
}
}
答案 3 :(得分:0)
1)为什么不将手数组的元素与其他元素进行比较?您已经完成了解释字符串并创建数组数据的工作;用它。
2)有更多可能的元素对。在电脑前连续放下五个相似的物体并亲自试一试。你应该能够确定十对。您还应该能够识别出如何查找/标记对的模式。
答案 4 :(得分:0)
以下示例是如何计算对的一种可能性。问题是如果字符串或数组中有三个相等的值或者其他什么,它应该如何表现(增加分数)。这应该算三对还是不计算......?
123 is in fact three combinations 12 && 13 && 23 111 is in fact three combinations 11 && 11 && 11
package edu.harris.pairs;
public class FindPairs {
public static void main(String[] args) {
String s = "hello";
int score = 0;
for (int i = 0; i < s.length() - 1; i++) {
for (int j = i + 1; j < s.length(); j++) {
if (s.charAt(i) == s.charAt(j)) {
score++;
}
}
}
System.out.println(score);
}
}
希望这有点帮助。