java - 如何在循环中使用多个条件来比较字符串的不同索引?

标签 java

所以我有一个我正在为自己工作的迷你项目,基本上它是java中用于纸牌游戏的简单方法,用于检查字符串是否同花。请记住,我是 java(以及纸牌游戏/扑克...)的初学者,所以我对所有这些都是新手。

例如: 字符串是“”Kh3h7h8h2s”,所以这手牌是红心K、红心3、红心7、红心8、黑桃2等。排名位于字符串的第1、3、5、7、9个索引中. 字符串需要有 5 个相同等级才能同花

public class CardProblemss {

String hand = "Kh3h7h8h2h";

public boolean hasFlush(String hand) {
    String suit1 = Character.toString(hand.charAt(1));
    String suit2 = Character.toString(hand.charAt(3));
    String suit3 = Character.toString(hand.charAt(5));
    String suit4 = Character.toString(hand.charAt(7));
    String suit5 = Character.toString(hand.charAt(9));
    int flushcounter = 0;

    while (true) {
    if (suit1.equals(suit2)) {
        flushcounter++;
    }            
    else if (suit2.equals(suit3)) {
        flushcounter++;
    } 
    else if (suit3.equals(suit4)) {
        flushcounter++;
    } 
    else if (suit4.equals(suit5)) {
        flushcounter++;
    } 
    System.out.println(flushcounter);
     if (flushcounter >= 5) {
        return true;
    }
    else {
        return false;
    }
    }  

}

现在我已经可以看出我的代码很糟糕。但我的问题是,我可以制定一个基本上单独使用 charAt(index) 方法的循环吗?由于手牌的排名位于索引 1,3,5,7,9,我可以编写一个循环,每次运行时都会将该方法的索引增加 2 吗?或者有更有效的方法可以做到这一点吗? 非常感谢。

最佳答案

这样的东西有用吗?

int flushCounter = 0;

char s = hand.charAt(1); // s for suite
for (int i = 3; i < hand.length(); i = i + 2) {
  if (s == hand.charAt(i)) {
    flushCounter++;
  }
}

if (flushCounter >= 5) {
  return true;
} else {
  return false;
}

这样,您将迭代字符串,然后根据奇数值比较套件的唯一方法。我假设你的手的大小总是 3 或更多。如果您希望i从1开始,您也可以这样做。

int flushCounter = 0;
char s; // s for suite

for (int i = 1; i < hand.length(); i = i + 2) {
  if (i == 1) {
    s = hand.charAt(1); 
  } else if (s == hand.charAt(i)) {
    flushCounter++;
  }
}

if (flushCounter >= 5) {
  return true;
} else {
  return false;
}

对于后者,您必须小心不要在 if 语句内初始化 s,否则在使用它之前它会超出范围。

注意:

if (flushCounter >= 5) {
  return true;
} else {
  return false;
}

可以简化为

return flushCounter >= 5;

因为它将计算表达式然后返回结果。前一种方式更加冗长。由于您只是返回表达式的值,因此我认为后者更简单。

关于java - 如何在循环中使用多个条件来比较字符串的不同索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39778939/

相关文章:

java - 如何在Android项目中使用Java中的weightSum?

java - 使用 spring "cvc-elt.1: Cannot find the declaration of element ' beans 获取错误消息。”

java - Android - 为什么此服务的多个实例正在运行

java - 动态包含在 JSP 模板中

java - 从数据库中删除一个简单的行

java - 如何定位我的按钮?

java - 从图像Java代码中获取GPS数据

java - 使用泛型在函数中传递多个类

java - 显示没有像应有的那样改变,但代码看起来不错?

java - Drools:访问 ArrayList 作为 Map 中的值