我尝试制作二十一点游戏,但遇到了功能问题。我想传递金钱和下注的参数,检查获胜者并计算新的金额,然后将其传递给另一个函数(在同一类中)以返回值,因为函数只能返回 1 个值,而且我找不到一种方法来做到这一点。
package project1;
public class RestultsNPayment {
//int cash;
public static String winner(int Dtotal, int Ptotal, int money, int bet) {
if(Ptotal > 21) {
return ("--------Dealer wins--------");
cash = money;
}
else if (Ptotal == Dtotal)
return ("------------Tie------------");
else {
if(21-Ptotal > 21-Dtotal && Dtotal < 22)
return ("--------Dealer wins--------");
else
return ("--------Player wins--------");
}
}
public static int payment(int money, int bet) {
return 0;
}
}
我尝试使用这个。方法并创建保存它的变量。尝试制作一个可以赚钱和下注的新功能,但后来意识到我需要先找到获胜者,所以我认为这不会有帮助。我想过在赢家函数中获取金钱并下注,计算新的现金金额,然后将现金传递到支付函数中。如果这是错误的想法,或者您有更好的方法,请纠正我。
从阅读你的问题来看,你想要实现的内容并不困难,但如果你对 Java 代码的结构有根本性的误解,那么正确实现可能会非常混乱。您的代码中有一些混淆。
首先,方法(或函数)是一组指令,程序的另一部分可以通过引用方法名称来调用这些指令来执行(调用)。方法可以接受输入(任意数量的参数),并且要么产生返回值,要么不产生返回值。关键字“void”表示该方法返回 null(这是一个用于表示不存在值的关键字)。每种方法通常应该只有一个、明确、特定的目的(文档也有帮助)。此外,要执行代码,要执行的语句应该位于包含 main 方法的类内。为了简单起见,我将其添加到现有的类中。
在“winner”方法中,从不使用参数“money”和“bet”,因此可以省略它们。此外,您尝试在此方法中设置非局部变量“cash”的值,这将导致编译错误。这是该方法的更新版本:
public static String winner(int Dtotal, int Ptotal) {
if (Ptotal > 21) {
return "dealer";
} else if (Ptotal == Dtotal) {
return "tie";
} else {
if (21 - Ptotal > 21 - Dtotal && Dtotal < 22) {
return "dealer";
} else {
return "player";
}
}
现在很明显,这种方法的唯一目的是评估获胜者。确定获胜者后,您的下一步是计算新的现金金额,然后将现金转入付款方式。然而,由于解释含糊不清,我不太确定你想要实现什么;所以我会留下一个示例解决方案。完整代码:
package project1;
public class RestultsNPayment {
public static String winner(int Dtotal, int Ptotal) {
if (Ptotal > 21) {
return "dealer";
} else if (Ptotal == Dtotal) {
return "tie";
} else {
if (21 - Ptotal > 21 - Dtotal && Dtotal < 22) {
return "dealer";
} else {
return "player";
}
}
}
public static int payment(int cash) {
return 0;
}
// Where your code is executed
public static void main(String[] args) {
// Holds the return value of the winner method
String champion = winner(10, 20); // Arbitrary Dtotal and Ptotal arguments
// [Insert logic to calculate cash here]
int cash = 0;
// Passing cash into payment method
payment(cash);
}
}
希望这有帮助!