Kan iemand me helpen met arrays?

Status
Niet open voor verdere reacties.

bask185

Gebruiker
Lid geworden
20 mrt 2009
Berichten
19
Ik ben met bluej een frisdrank machine aan het maken. We moeten daarbij object georienteed te werk gaan. Nu heb ik een Jpanel en een mooie goed werkende GUI. En ik heb een klasse "Drankje" met naam en prijs als attributen.

Ik had eerst een derde attribuut; aantal. Maar dat werd niet goedgekeurd. Ik moest een aparte klasse maken voor de vooraad. Ik knipte met mn vingers en zei; Zo gezegd Zo gedaan! Ik maakte een voorraad klasse.

In de Jpanel gebruik ik de constructor van de klasse Drankje en maak ik 5 drankjes aan. Daarna maak ik een voorraad object aan en stop ik er een drankje in met een integer voor de aantal. In de voorraad klasse maak ik een arraylist aan waarin alle drankjes worden opgeborgen, so far so good. Maar dan moet ik een int array maken met informatie over de hoeveelheid drankjes; aantal.

Maar potverdriedubbels, wat haat ik arrays en arraylisten in java. Geef mij maar C en C++

Het is mijn idee om in de Jpanel een functie aan te roepen, met als argument één van de vijf drankjes om vervolgens informatie te krijgen van de integer array in de voorraad klasse. Probleem 1: Als ik eenmaal in de functie zit, met een Drankje als argument moet ik uit die arraylist met 5 drankjes de index ophalen, zodat ik de aantal waarde uit het integer array kan vissen

Code:
private Drankje cola = new Drankje("Cola", 1.1);       // maak 5 drankjes aan
  private Drankje sinas = new Drankje("Sinas", 1.2);
  private Drankje sprite = new Drankje("Sprite", 1.3);
  private Drankje cassis = new Drankje("Cassis", 1.4);
  private Drankje bitter_lemon = new Drankje("Bitter Lemon", 1.5);
  
  private Voorraad voorraad = new Voorraad(cola, 15); // maak voorraad aan en stop er 1 drankje in
 
  
  private double saldo, wisselgeld;
 
  
  public TekstvakEnKnopPaneel() {
    setLayout( null );
    setBackground(Color.CYAN);
    
    voorraad.addDrankje(sinas, 15);        // stop nog 4 soorten drankjes in de voorraad
    voorraad.addDrankje(sprite, 15);       // het gaat om de functie getAantal
    voorraad.addDrankje(cassis, 15);
    voorraad.addDrankje(bitter_lemon, 15);

de functie getAantal
Code:
public class Voorraad
{
    // instance variables - replace the example below with your own
  
  private ArrayList<Drankje> lijst;
  private int index;
  
  private int aantal[];
  
    public Voorraad(Drankje d, int a)
    {
        lijst = new ArrayList<Drankje>(); //initialisee arraylist
        lijst.add(d);                     // stop drankje in arraylost
        
        aantal = new int[5];              // maak integer array
        aantal[0] = 10;                   // vul het array met waarde 10
        aantal[1] = 10;                   // ( voor test doeleind)
        aantal[2] = 10;
        aantal[3] = 10;
        aantal[4] = 10;
    }

    
    public void addDrankje(Drankje d, int a) 
    {
        lijst.add(d);                      // voegt drankje toe aan arraylist
        // ook hier wil ik de index weten van drankje d in de lijst
    }
    
    public int getAantal(Drankje d)
    {
        index = lijst.get(); // <-- hoe krijg ik indexwaarde van de arraylist
        // ???????? als ik dus deze functie aanroep met bijvoorbeeld het drankje
        int waarde = aantal[index]; // cola, hoe krijg ik de index waarde van 
        return waarde;              // het array terug van cola?
    }
    
}
Ik kan wss wel de naam 'get'en van het drankje argument en dan in een for-loop alle String namen met mekaar gaan vergelijken, maar ik wel een beetje een knap programma ;) Ik wil gewoon de index weten.


Dan heb ik nog een ander vraagje over arraylist. Ik heb voor de frisdrank machine een paar knopjes en 2 textbalken. In de code moet ik met elke knop (knop1, knop2 etc) ZES dingen doen, dat is veel tik werk, mn code word lang in andere woorden. Ik wil een for-loop implementeren.

Code:
    knop1 = new JButton(cola.getNaam());
    knop1.setBounds(160,70,120,30);
    knop1.setBackground(Color.RED);
    knop1.setForeground(Color.WHITE);

    knop1.addActionListener(new KnopHandler());
    add(knop1);

 // ik heb geprobeerd

private ArrayList<JButton> lijst2;

etc etc

    lijst2 = new ArrayList<JButton>();
    lijst2.add(knop1);
    lijst2.add(knop2);
    lijst2.add(knop3);
    lijst2.add(knop4);
    lijst2.add(knop5);
Maarrr....

Nu compileert dit wel goed, dus ik doe schijnbaar toch iets goed :p alleen als ik ipv
Code:
knop1 = new JButton(cola.getNaam());
Code:
lijst2[0] = new JButton(cola.getNaam());
probeer, dan wordt mijn compiler boos op me en zegt: "array required, but java.util.ArayList<javax.swing.JButton> found"

En ik begrijpt rare java taal en foutmeldings slecht :mad:
 
Array list bvb

Code:
Referentie :http://balusc.blogspot.com/2007/01/generics.html
 1 import java.util.ArrayList;
 2 import java.util.Iterator;
 3 import java.util.List;
 4 public class Test {
 5     public static void main(String[] args) {
 6         List arrayList = new ArrayList();// Declareer en initialiseer
 7         arrayList.add(new Integer("1"));
 8         arrayList.add(new Integer("2"));
 9         arrayList.add(new Integer("3"));
 10     for (Iterator iter = arrayList.iterator(); iter.hasNext();) {
 11             // iter.next() retourneert een Object, je moet deze casten naar Integer.
 12             Integer integer = (Integer) iter.next();
 13             // Laat de waarde zien.
 14             System.out.println(integer);
 15         }
 16     }
 17 
 18 }

Code:
private ArrayList<String> selectedValues = new ArrayList<String>();
verder zal het naar een ...
Code:
final ObservableList<Person> data = FXCollections.observableArrayList(
 1                 new Person("click to edit", "Smith"),
 2                 new Person("", "Johnson"),
 3                 new Person("", "Williams1"),
 4                 new Person("", "Williams2"),
 5                 new Person("", "Williams3"),
 6                 new Person("", "Williams4"),
 7                 new Person("", "Williams5"),
 8                 new Person("", "Jones"),
 9                 new Person("", "Brown"),
 10                 new Person("", "Brown2"));
een andere mogelijkheid niet array maar toch effen meegeven
Code:
 1 package test;
 2 public class DataTransferObject<T1, T2> {
 3     private T1 data1;
 4     private T2 data2;
 5     public void add(T1 data1, T2 data2) {
 6         this.data1 = data1;
 7         this.data2 = data2;
 8     }
 9     public T1 getData1() {
 10         return data1;
 11     }
 12     public T2 getData2() {
 13         return data2;
 14     }
 15 }

 1 DataTransferObject<String,Integer> dto= new DataTransferObject<String,Integer>();
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan