[英]How can I use a single Imageview to display 1 of several different icons
[英]How can I use several conditions in a loop to compare different indexes of a string?
所以我有一個我正在為自己工作的微型項目,基本上,這是java中的一種簡單的紙牌游戲方法,用於檢查字符串是否具有同花順。 請記住,我是Java(和cardgames / poker ...)的初學者,所以我對所有這些都是新手。
例如:字符串是““ Kh3h7h8h2s”,因此手是紅心之王,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;
因為它將對表達式求值,然后返回結果。 前一種方法更為冗長。 由於您只是返回表達式的值,因此我認為后者更簡單。
只是為了好玩,這是如何使用流來做到這一點!
public static boolean hasFlush(final String hand) {
final char first = hand.charAt(1);
final long count = hand.chars().filter(c -> c == first).count();
return count == 5;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.