簡體   English   中英

如何將變量從一種方法轉移到另一種方法而不將其存儲在Java中的類中?

[英]How can I transfer a variable from one method to another without storing it in a class in Java?

我有一個包含三種方法的類,用於確定信用卡是否有效,信用卡類型是什么,以及用x代替最后四位數字來顯示數字。 這是針對一個班級的,我的老師不希望我在此班級中存儲信用卡的變量。 因此,在另一堂課中,我必須在一種方法中詢問信用卡號並將其存儲在該方法中。 但是,我想要第二種方法,該方法調用用於顯示信用卡類型和格式化格式的方法,但是我不知道如何將變量從第一種方法傳遞到下一種方法。 請幫忙。

這是我的readCreditCard方法,該方法詢問信用卡號並確定其是否有效:

public void readCreditCard(CreditCard creditCard)
{
    System.out.print("\nPlease enter your Credit Card Number: ");
    String creditCardNum = keyboard.next();

    while (creditCard.isCardValid(creditCardNum) == false)
    {
        System.out.println("Invalid credit card number" + creditCardNum);
        System.out.println("Please try again.");

        System.out.print("\nPlease enter your Credit Card Number: ");
        creditCardNum = keyboard.next();
    }


}

我想要一個名為printCreditCard的方法,該方法允許我使用readCreditCard方法中的變量creditCardNum,以便可以在CreditCard類中使用其他兩個方法,但是我不確定該怎么做。

這是CreditCard類的內容:

public boolean isCardValid(String creditCard)
{
    boolean valid;
    String singleDigitPrefix = creditCard.substring(0, 1);
    String doubleDigitPrefix = creditCard.substring(0, 2);

    if ((creditCard.length() == 13 || creditCard.length() == 16) && singleDigitPrefix.equals("4"))
    {
        valid = true;
    }
    else if (creditCard.length() == 16 && (doubleDigitPrefix.equals("51") || 
            doubleDigitPrefix.equals("52") || doubleDigitPrefix.equals("53") ||
            doubleDigitPrefix.equals("54") || doubleDigitPrefix.equals("55")))
    {
        valid = true;
    }
    else if (creditCard.length() == 15 && doubleDigitPrefix.equals("37"))
    {
        valid = true;
    }
    else
    {
        valid = false;
    }

    return valid;
}

public String getCardType(String creditCard)
{
    String cardType = null;

    String singleDigitPrefix = creditCard.substring(0, 1);
    String doubleDigitPrefix = creditCard.substring(0, 2);

    if ((creditCard.length() == 13 || creditCard.length() == 16) && singleDigitPrefix.equals("4"))
    {
        cardType = "Visa";
    }
    else if (creditCard.length() == 16 && (doubleDigitPrefix.equals("51") || 
            doubleDigitPrefix.equals("52") || doubleDigitPrefix.equals("53") ||
            doubleDigitPrefix.equals("54") || doubleDigitPrefix.equals("55")))
    {
        cardType = "MasterCard";
    }
    else if (creditCard.length() == 15 && doubleDigitPrefix.equals("37"))
    {
        cardType = "American Express";
    }
    else
    {

    }

    return cardType;
}

public String maskCardNumber(String creditCard)
{
    String formattedNum = null;

    if (getCardType(creditCard).equals("Visa"))
    {
        if (creditCard.length() == 13)
        {
            formattedNum = "XXXXXXXXX" + creditCard.substring(8, 13);
        }
        else
        {
            formattedNum = "XXXXXXXXXXXX" + creditCard.substring(11, 16);
        }
    }
    else if (getCardType(creditCard).equals("MasterCard"))
    {
        formattedNum = "XXXXXXXXXXXX" + creditCard.substring(11, 16);
    }
    else if (getCardType(creditCard).equals("American Express"))
    {
        formattedNum = "XXXXXXXXXXX" + creditCard.substring(10, 15);
    }
    else;

    return formattedNum;




}

}

創建一個具有稱為creditCardNum等成員變量的bean,該方法將該bean返回到需要的方法。

如果我正確理解了您的問題,我會看到兩種選擇

選項1:如果您想要的是單個值,請返回信用卡號。

public int readCreditCard(CreditCard creditCard)
{
    System.out.print("\nPlease enter your Credit Card Number: ");
    String creditCardNum = keyboard.next();

    while (creditCard.isCardValid(creditCardNum) == false)
    {
        System.out.println("Invalid credit card number" + creditCardNum);
        System.out.println("Please try again.");

        System.out.print("\nPlease enter your Credit Card Number: ");
        creditCardNum = keyboard.next();
    }


}

選項2:如果要通過方法傳遞/返回多個值,則傳遞信用卡對象(bean /模型)將解決您的問題。

這是例子。

 public class CreditCardBean{


        private String creditCardNumber;
        private Date expirationDate;


        public String getCreditCardNumber() {
              return creditCardNumber;
        }

        public void setCreditCardNumber(String creditCardNumber) {
            this.creditCardNumber = creditCardNumber;
        }

        public Date getExpirationDate() {
           return expirationDate;
        }

        public void setExpirationDate(Date expirationDate) {
          this.expirationDate = expirationDate;
       }

    }




public CreditCardBean readCreditCard(CreditCard creditCard)
{
    CreditCardBean bean = new CreditCardBean();
    System.out.print("\nPlease enter your Credit Card Number: ");
    String creditCardNum = keyboard.next();

    while (creditCard.isCardValid(creditCardNum) == false)
    {
        System.out.println("Invalid credit card number" + creditCardNum);
        System.out.println("Please try again.");

        System.out.print("\nPlease enter your Credit Card Number: ");
        creditCardNum = keyboard.next();
        bean.setCreditCardNumber(creditCardNum);

    }
// Set other details which you want to pass.
// bean.setExpirationDate(<setDate here>); 
return bean;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM