如何使用Java将此方法的返回值传递给另一个类?

如何使用Java将此方法的返回值传递给另一个类?,java,Java,我创建了一个通过用户输入返回一行数组的方法。我通过在userDigits中分配每个值,使用System.out.println在同一个类上显示输入的数字集。 我的问题是,如何在另一个类中传递相同的值 public class LottoTicket extends Ticket { public int NUM_DIGITS = 5; public int[] userDigits = new int[NUM_DIGITS]; @Override public void buyTicket(

我创建了一个通过用户输入返回一行数组的方法。我通过在userDigits中分配每个值,使用System.out.println在同一个类上显示输入的数字集。 我的问题是,如何在另一个类中传递相同的值

public class LottoTicket extends Ticket {

public int NUM_DIGITS = 5;
public int[] userDigits = new int[NUM_DIGITS];

@Override
public void buyTicket() {
    Scanner input = new Scanner(System.in);

    int number = 0;
    double amount = 0;
    System.out.println("-------=======LOTTO TICKET SCREEN=======--------");
    System.out.println("");
    System.out.println("There are three Types (Prima, Ambo and Terro)");
    System.out.print("Please select one (P, A, T): ");
    String lotteryOption = input.next();

    switch (lotteryOption) {
        case "P": {
            break;
        }
        case "A": {
            break;
        }
        case "T": {

           amount = getAmount(amount);
           getUserData(userDigits);
           int ticketSold;
            ticketSold = +1;
            int tik = ticketSold +1;
            System.out.println(amount);

            System.out.println("Your numbers are:  " + userDigits[0] + " "
                    + userDigits[1] + " " + userDigits[2] + " " + userDigits[3]
                    + " " + userDigits[4] + " ");
            System.out.println("Ticket/s Sold: " + tik);
            System.out.println("Thank you for playing");
            Ticket.pressAnyKeyToContinue();
            LotteryApplication.loginScreen();
            break;
        }
        default: {
            System.out.println("Invalid Input. Please try again.");
            System.out.println("");
            buyTicket();
            break;
        }
    }
}


@Override
public double getAmount(double amount) {
    Scanner input = new Scanner(System.in);
    System.out.print("Please enter amount of money: ");
    amount = input.nextDouble();
    //input.close();
    return amount;
}

@Override
public int getUserData(int[] userInput) {
    Scanner input = new Scanner(System.in);

    System.out.print("Choose a number from 1 to 90: ");
    userDigits[0] = input.nextInt();
    System.out.print("Choose a number from 1 to 90: ");
    userDigits[1] = input.nextInt();
    System.out.print("Choose a number from 1 to 90: ");
    userDigits[2] = input.nextInt();
    System.out.print("Choose a number from 1 to 90: ");
    userDigits[3] = input.nextInt();
    System.out.print("Choose a number from 1 to 90: ");
    userDigits[4] = input.nextInt();

    //key.close();
    //Returns last value of array
    return userDigits[4];
}
//public int userDigits[];
public static void printTicket(){

   // System.out.println(getUserData.userDigits[4]);
   // for (int i = 0; i < array.length)
}

}

在本例中,由于您将userDigits定义为public,因此可以很容易地实现这一点——任何对您的lototicket实例具有可见性的类都可以访问它。使用当前设置,您可以执行以下操作:

// you need to instantiate LottoTicket somewhere in your app
LottoTicket ticket = new LottoTicket();

// get the input from user
ticket.buyTicket();

// at this point you can access the numbers and pass them to some other method like this
checkNumbers(ticket.userDigits);
上面发布的示例需要您提供具有以下签名的方法CheckNumber:

public void checkNumbers(int[] numbers) {
// the comparison code goes here...
此外,这与您的问题有些无关,但我想指出您当前代码的两个问题:

很少将类字段定义为公共字段,更常见的方法是将它们定义为私有字段,并提供获取/设置字段值的方法;这将这些字段上的操作限制为您允许的操作-拥有公共字段允许对该字段具有可见性的任何人基本上执行任何操作,这通常不是您想要的 若用户未选择有效的彩票类型,则从默认值调用buyTicket;在极端情况下,这可能会导致StackOverflowerError—更好的方法是使用循环,在提供有效的输入之前不断询问用户输入
希望这至少有一点帮助。

你能发布一个更可行的代码吗?你在哪里有这个数组?你想在哪里传递它?这是一个非常重复的代码;你应该使用循环。我的意思是真的,写同样的代码5次,而不是为int I=0写一个;ipublic void checkNumbers(int[] numbers) { // the comparison code goes here...