[英]How can I call the retrieved JSON object from one method to another without storing it as a string?
[英]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.