我正在做这个练习,练习是这样说的:
*给定一个包含 3 名玩家之间的 1000 个随机二十一点手的输入文件(此处:blackjack.txt),计算所有游戏中任何玩家遇到的二十一点的数量。
二十一点被定义为任何花色的 A 和任何花色的 10 点牌(J、Q、K 或 10)。
输入文件如下所示:(作为示例)
4H 5C AD JH 9C 10H
这意味着玩家 1 有红桃 4 和梅花 5;玩家 2 有方块 A 和红心 J(算作二十一点);玩家 3 有梅花 9 和红心 10。
为了解决这个问题,我们知道有一个标准的 52 张牌组,每场新游戏都会重新洗牌。*
我认为我的方法是正确的,我的代码是正确的,但是我的答案失败了,任何提示,获得正确答案的建议
这是我的代码:
import java.io.*;
public class Problema16 {
public static void main(String args[]) {
File archivo = null;
FileReader fr = null;
BufferedReader br = null;
int counter = 0;
//int rest = 0;
try {
archivo = new File("C:\\Users\\\blackjack.txt");
fr = new FileReader(archivo);
br = new BufferedReader(fr);
String linea;
String[] linea2 = null;
while ((linea = br.readLine()) != null) //System.out.println(linea);
{
linea2 = linea.split(" ");
String a = (linea2[0]);
String b = (linea2[1]);
String c = (linea2[2]);
String d = (linea2[3]);
String e = (linea2[4]);
String f = (linea2[5]);
if ((a.startsWith("A") && (b.startsWith("J") || (b.startsWith("Q") || (b.startsWith("K") || (b.startsWith("10")))))) || ((a.startsWith("J") || (a.startsWith("Q") || (a.startsWith("K") || (a.startsWith("10"))))) && (b.startsWith("A")))) {
counter++;
//System.out.println(a + "" + b + "");
} else if ((c.startsWith("A") && (d.startsWith("J") || (d.startsWith("Q") || (d.startsWith("K") || (d.startsWith("10")))))) || ((c.startsWith("J") || (c.startsWith("Q") || (c.startsWith("K") || (c.startsWith("10"))))) && (d.startsWith("A")))) {
counter++;
//System.out.println(c + "" + d + "");
} else if ((e.startsWith("A") && (f.startsWith("J") || (f.startsWith("Q") || (f.startsWith("K") || (f.startsWith("10")))))) || ((e.startsWith("J") || (e.startsWith("Q") || (e.startsWith("K") || (e.startsWith("10"))))) && (f.startsWith("A")))) {
counter++;
//System.out.println(e + "" + f + "");
} else {
//sobra++;
}
}
System.out.println(counter);
//System.out.println(sobra);
} catch (Exception e) {
e.printStackTrace();
}
}
}
这是在线练习1。我的答案是 119,但是是错误的。