Opprette en metode som fungerer som Arraylist .Legg ()

stemmer
0

Jeg skriver et program som fungerer som en 'lomme' hvor brukeren er i stand til å legge inn en slags mynt, for eksempel, en fjerdedel og mengden av kvartalene den har. Jeg fikk i oppdrag å gjøre 3 forskjellige klasse, Coin klasse der myntene og deres verdier kan instatiated fra en Pocket klasse, hvor jeg må skrive en metode som kan legge myntene til brukeren (i utgangspunktet metoden vil fungere som Arraylist .Legg ()) og den PocketClass testeren. Jeg har allerede skrevet det meste av koden, men jeg er fast til hvordan jeg kunne skrive følgende metode:

 public void addCoin(String s, int i)
     {
          // s is type of coin, you are using s to instantiate a Coin and get value
         // i is number of coins, you are using i to keep adding value to the    totalValue
     }

Mitt spørsmål er hvordan skal jeg nærme seg dette? Jeg er ikke helt klart om hvordan du oppretter metoden. Vil jeg bruke en for-løkke for å holde styr på antall mynter? Jeg forstår at addCoin metoden fungerer mye som .Legg () fra Arraylist.

Her er koden fra mine andre klasser:

public class Coin
{
    private final String DOLLAR = DOLLAR;
    private final String QUARTER = QUARTER;
    private final String DIME = DIME;
    private final String NICKEL = NICKEL;
    private final String PENNY = PENNY;
    private int value;
    private String coinName;
    public Coin(String s,int count)//name of the coin and also the number of the coins you have 
    {
        //Use if or switch statement to identify incoming string and provide value
       double value=0;
        if(DOLLAR.equalsIgnoreCase(s))
        {
            value=100.0;
        }
        else if(QUARTER.equalsIgnoreCase(s))
        {
            value=25.0;
        }
        else if(DIME.equalsIgnoreCase(s))
        {
            value=10.0;

        }
        else if(NICKEL.equalsIgnoreCase(s))
        {
            value=5.0;
        }
        else if(PENNY.equalsIgnoreCase(s))
        {
            value=1.0;
        }

    }

    public int getValue()
    {
        return value;
    }
}

og hvordan Pocket klassen er strukturert:

public class Pocket
{
   private int currentValue; 
   private int totalValue; 
   private Coin quarter;
   private Coin dime;
   private Coin nickle;
   private Coin penny;


   public Pocket()
   {  //Set initial value to zero
      totalValue = 0;
      currentValue = 0;
   }
   public void addCoin(String s, int i)
   {
       // s is type of coin, you are using s to instantiate a Coin and get value
      // i is number of coins, you are using i to keep adding value to the totalValue




   }
   public int getValue()
   {
       return totalValue;
    }
   public void printTotal()
   {
    //print out two different output

   }
}
Publisert på 21/01/2015 klokken 02:01
bruker
På andre språk...                            


2 svar

stemmer
0

Jeg antar du legger den addCoinmetoden i Pocketklassen.

Hvis du har tenkt å holde oversikt over hvor mange mynter av hver type i en Pocket, den enkleste måten å gjøre det ville være å erklære en HashMap som er tastet av mynt type (si, en "kvart" eller en "dollar") og verdsatt av antall mynter av denne typen. En påkallelse av addCoin(type, count)metoden, sier addCoin("dollar", 5)kan da sjekke om HashMap allerede inneholder en nøkkel som heter "dollar" og hvis det finnes, øke sin verdi etter count.

Svarte 21/01/2015 kl. 02:09
kilden bruker

stemmer
0

Jeg foreslår at lagring av mynter i en liste, slik at du kan legge til ubegrenset antall av dem.

Eksempel:

class Coin{
  //Same as your code....

  public Coin(String coinType){
  //..Same as your code, but removed number of coins
  }
}

public class Pocket {private int Current; private int totalvalue; // Lag en liste over mynter for å lagre ubegrenset antall mynter // En lomme kan halv 5 dimes
List mynter;

 public Pocket(){  
    //Set initial value to zero
    totalValue = 0;
    currentValue = 0;
    coins = new ArrayList<Coin>();
 }
 /**
  * This method will take only one coin at a time
  **/
 public void addCoin(String s){
   Coin c = new Coin(s);
   coins.add(c);
   totalValue+=c.getValue();
 }
 /**
  * This method will take any number of coins of same type
  **/
 public void addCoin(String s, int c){
   //Add each one to array
   for(int i=0;i<c;i++)[
      addCoin(s);
   }
 }
}

Jeg er ikke i favør av å holde flere myntverdier i en Coin objekt på grunn av det faktum det er ikke et sant bilde av et objekt. Hva betyr det er i morgen hvis du vil lagre andre Coin attributter som "Printed Year", "President Bilde på mynten" etc, vil du ha vanskelig tid. Etter min mening er det bedre å representere en virkelig verden objekt (en mynt her) ved hjelp av ett objekt forekomst i programmet,

Svarte 21/01/2015 kl. 02:31
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more