如何在另一个函数中使用从主类传递到另一个类的参数?

how to use an argument passed from the main class to another class within another function?

提问人:Moby772 提问时间:10/21/2023 更新时间:10/21/2023 访问量:37

问:

我尝试制作二十一点游戏,但遇到了功能问题。我想传递金钱和赌注的参数,检查获胜者并计算新的金额,然后将其传递给另一个函数(在同一类中)以返回值,因为函数只能返回 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 函数 参数传递

评论

0赞 John Bayko 10/21/2023
对象的原因是将少量数据与使用它的方法捆绑在一起,因此数据不会作为参数传递。看起来你只是将类视为某些函数的命名空间。
0赞 David Conrad 10/21/2023
我不清楚你想去哪里经过什么,你想从哪里返回什么。确实,函数只返回一个值,但该值不一定是简单值。它可以是一个类。

答:

0赞 Darragh 10/21/2023 #1

通过阅读您的问题,您尝试实现的内容并不困难,但是如果您对 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);
    }
}

希望这有帮助!