-2

そのため、セキュリティ コード、会社、口座番号が同じである場合に 2 つのクレジット カードが等しい場合に true を返す equals メソッドを作成できるように、コードの記述に問題があります。

これまでのところ、私のコードはここにあります。

public class CreditCard {

private double balance;
public static double interestRate;
public static String personname;
public static String company;
public static double creditLine;

public CreditCard ()
{
    balance = 0;

}
public static void setIntRate (double rate)
{
    interestRate = rate;
    System.out.println("The Interest rate for this card is : " + interestRate);
}
public static double getIntRate ()
{
    return interestRate;
}

public static void setPersonName (CreditCard card ,String pName)
{
    personname = pName;
    System.out.println("Name on card: " + personname);
}

public static void setCompany (CreditCard card, String compName)
{
    company =compName;
    System.out.println("The Company name is : "+ company);
}
//creates new card number
public static void CardNum (CreditCard card)
{
    int[] accountnumber = new int [16];
    Random generator = new Random ();
     for (int i =0; i<16; i++)
         accountnumber [i] = (int)(Math.random()*10);
    System.out.println ("The Account number for this card is: " + (java.util.Arrays.toString(accountnumber))+"");

     }

//Creates new securitycode
public static void getSecurityCode (CreditCard card)
{
    int[] securitycode = new int [3];
    Random generator = new Random ();
     for (int i =0; i<3; i++)
         securitycode [i] = (int)(Math.random()*10);
    System.out.println ("The security code for this card is: " + (java.util.Arrays.toString(securitycode))+"");
}

public static void setexpirationdate(int MM, int YY)
{
    System.out.println("The expiration date for this card is: " + MM + "/"+ YY + "\n");
}
public static void setCreditLine (int cLine){
    creditLine =cLine;

}
public static void getCreditLine (CreditCard card)
{
    System.out.println( " CreditLine is : $" + creditLine);
}
// buys something
public void buyWithCreditCard (double amount)
{
    balance = balance + amount;

}
//Inserts money to reduce balance
public double paybalance (double amount)
{
    if (balance >= amount){
        balance = balance - amount;
    roundBalance();}
    else{ 
        creditLine = creditLine + (amount - balance);
        balance = 0;
        System.out.println("Your new CreditLine is: "+creditLine);
        roundBalance();
    }

    return amount;
}

// adds interest to balance
public void addInterest ()
{

    double interest = balance * getIntRate ();
    balance = balance + interest;
    roundBalance ();    
}

private void roundBalance ()
{
    balance = (double)(Math.round(balance*100))/100;

}
public double checkBalance (){
    return balance;
}
//Shows Credit Card Debt
public static void showBalance (CreditCard card)
{
    System.out.print(card.balance);
}

}

次に、CreditCard クラスを利用するクラスです。

public class CreditCardDemo {
public static void main (String [] args)
{

    //Creates cards 1 and 2
    CreditCard firstCard = new CreditCard ();
    CreditCard secondCard = new CreditCard ();
    //Calls for card info 1 
    System.out.println("First card Information is:");
    CreditCard.setPersonName(firstCard,"John White");
    //CreditCard.getName(firstCard);
    CreditCard.setCreditLine(600);
    CreditCard.getCreditLine(firstCard);    
    CreditCard.setCompany(firstCard,"Visa");
    CreditCard.setIntRate(0.02);
    CreditCard.CardNum(firstCard);
    CreditCard.getSecurityCode(firstCard);
    CreditCard.setexpirationdate(11, 17);
    //call for card info 2

    System.out.println("Second card Information is:");
    CreditCard.setPersonName(secondCard,"Jack Black");
    CreditCard.setCreditLine(2600);
    CreditCard.getCreditLine(secondCard);
    //CreditCard.getName(secondCard);
    CreditCard.setCompany(secondCard,"Discover");
    CreditCard.setIntRate(0.02);
    CreditCard.CardNum(secondCard);
    CreditCard.getSecurityCode(secondCard);
    CreditCard.setexpirationdate(10, 19);

    //Purchases
    System.out.println("\nYou bought something for $5.00");
    firstCard.buyWithCreditCard (5.00);
    System.out.println("You bought another item for $12.00");
    firstCard.buyWithCreditCard(12.00);
    System.out.println("You bought another item for $15.00");
    firstCard.buyWithCreditCard(15.00);
    System.out.println("You bought another item for $33.42");
    firstCard.buyWithCreditCard(33.42);

    //Display Current Balance
    System.out.print("You currently owe: $");
    CreditCard.showBalance(firstCard);


    //Interest Adds onto it
    if (firstCard.checkBalance () > 50.00){
    System.out.println("\nInterest has been added");
    firstCard.addInterest ();
    System.out.print("Your new balance is : $");
    CreditCard.showBalance(firstCard);
    System.out.println("");
    //Payment
    System.out.println("You have overpaid your balance.");
    firstCard.paybalance (70);
    System.out.print("Your new balance is : $");

    CreditCard.showBalance(firstCard);

    }

}

}

したがって、firstCard と secondCard のどちらであるかを確認できる CreditCard クラスのメソッドを作成する方法を誰かが教えてくれれば、それは素晴らしいことです。本当にありがとう :)

4

2 に答える 2

1

If you use NetBeans, you can simply auto-generate the equals function (not sure about Eclipse). Other than that it boils down to overwriting the equals function of Object.

Make sure to check that both are of the same class and make sure to check for null. Java recommends to as well overwrite the hashCode function, however that depends on your use-case.

于 2013-10-06T21:05:00.267 に答える