提问人:Moby772 提问时间:10/21/2023 更新时间:10/21/2023 访问量:37
如何在另一个函数中使用从主类传递到另一个类的参数?
how to use an argument passed from the main class to another class within another function?
问:
我尝试制作二十一点游戏,但遇到了功能问题。我想传递金钱和赌注的参数,检查获胜者并计算新的金额,然后将其传递给另一个函数(在同一类中)以返回值,因为函数只能返回 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 方法的类中。为简单起见,我已将其添加到现有类中。
在“赢家”方法中,从不使用参数“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);
}
}
希望这有帮助!
评论