Avatar billede montymus Nybegynder
30. november 2003 - 21:44 Der er 35 kommentarer og
1 løsning

void findItem()

Spørgsmålet går på...

Inlæser et itemNo fra skærmen . Ud fra dette nummer findes det rette item-objekt som udksrives på skærmen. Hvis det ikke findes udkrives en relevant meddelse...

Hvordan djævlen gør jeg dette????

Dette er min ItemCollectiob... I bunden er min ItemMenu..
--------------------------------------------------------
import java.util.*;
import javax.swing.*;

public class ItemCollection {
   
    private Vector data;
   
    /** Creates a new instance of ItemCollection */
    public ItemCollection() {
        data  = new Vector();
    }
        public boolean addItem (Item aItem) {
            data.add(aItem);
                        return true;
        }
        public int size(){
            return data.size();
        }
                public int numberOfItems(){
                    return data.size();
                }
                public Item replaceItem (String itemNo, Item aItem) {
              int ino = Integer.parseInt(itemNo);
                for (int index = 0; index < size(); index++){
                if (ino == index);
        return (Item)data.set(ino, aItem);
                }
        return null;
        }
             
           
        public Item removeItem (String itemNo) {
              int ino = Integer.parseInt(itemNo);
                for (int index = 0; index < size(); index++){
                if (ino == index);
        return removeItem (itemNo);
                }
        return null;
        }
             
       
       
    public Item getItem (String itemNo) {
                int ino = Integer.parseInt(itemNo);
                for (int index = 0; index < size(); index++){
                if (ino == index)
        return getItem (itemNo);
                }
        return null;
                }
       
       

        public Item getItem(int index) {
            if (0 <= index && index < size())
            return (Item)data.get(index);
            else
            return null;
        }

    public String toString() {
        String result="";
        for (int index = 0; index < data.size(); index++) {
            result = result + this.data +"\n";
        }
        return result;
    }

}
---------------------------------------------------------
   
import java.util.*;
import javax.swing.*;
import java.io.*;

// class menu som kalder de enkelte usecase controllers

class Menu {

// data  reference attributter til bog katalog
    ItemCollection items;
   
// Definition af constructor
    public Menu (ItemCollection  items){
        this.items = items;
    }

    // The main menu
    public void menu(){

        boolean fortsæt = true;

        while (fortsæt){
            System.out.println();
            System.out.println("0: Udskriv alle items");
            System.out.println("1: Opret item");
            System.out.println("2: Find item");
            System.out.println("3: Fjern item");
            System.out.println("4: Ændre item");
                        System.out.println("5: Erstat item");
                        System.out.println();
            System.out.println("9: afslut");

            String input = JOptionPane.showInputDialog("Indtast valg 0-5 eller 9 :");



            if (input.length()>0){
                char menuChoice = input.charAt(0);

                switch (menuChoice){
                    case '0' : printItemList();
                                break;

                    case '1' : createItem();
                                break;

                    case '2' : findItem();
                                break;

                    case '3' : removeItem();
                                break;

                    case '4' : editItem();
                                break;
                                                               
                                        case '5' : substituteItem();
                                                                break;

                    case '9' : fortsæt = false;  // stop the while-loop
                                break;

                    default:  JOptionPane.showMessageDialog(null,"Du bør taste (0-5 eller 9)");
                                break;
                        }
            }
            else
                JOptionPane.showMessageDialog(null,"Du bør taste (0-5 eller 9)");


        } // while

    }


    /*
    *  Interne metoder til at hjælpe
    */
        void printItemList(){
        System.out.println("Itemlisten indeholder");
        System.out.println(items);
        System.out.println();
    }

    void createItem(){
        String itemNo = JOptionPane.showInputDialog("Indtast item nummer");
       
        String itemType = JOptionPane.showInputDialog("Indtast item type");

        String priceStr = JOptionPane.showInputDialog("Indtast item pris");
                double price = Double.parseDouble(priceStr);
               
        String yearStr = JOptionPane.showInputDialog("Indtast bog klasse kode");
        int year      = Integer.parseInt(yearStr);
     
        String quality = JOptionPane.showInputDialog("Indtast kvalitet");
       
        Item aItem = new Item(itemNo, itemType, price, year, quality);
        items.addItem(aItem);
    }

            void findItem (String itemNo) {
            itemsSoFar = fill;

            for (int i = fill +1; i < itemNo.size(); i++) {
                ItemCollection it = (Item) items getItems(i);
                Item it2 = (Item) items getItems(itemMinSoFar);
                if (it.getTitle().compareTo (it2.getTitle()) < 0) {
                    itemMinSoFar = i;
                }
            }
            return itemMinSoFar;
        }
-------------------------------------------------------
Jeg har skrevet lidt der ved void findItem  men den vil ikke rigtig som jeg vil..kan i hjælpe????
Avatar billede conrad Nybegynder
30. november 2003 - 21:49 #1
Kan du ikke bruge din
public Item getItem (String itemNo) {
                int ino = Integer.parseInt(itemNo);
                for (int index = 0; index < size(); index++){
                if (ino == index)
        return getItem (itemNo);
                }
        return null;
                }
og test på om du får null tilbage
Avatar billede montymus Nybegynder
30. november 2003 - 21:50 #2
mit prob er at jeg ingen app klasse har endnu..jeg er kørt slavisk efter opgaven...så jeg ved ikke hvordan jeg skal gøre det
Avatar billede arne_v Ekspert
30. november 2003 - 21:53 #3
Umiddelbart vil jeg også mene at findItem og getItem må være det samme.
Avatar billede arne_v Ekspert
30. november 2003 - 21:54 #4
Jeg tror at:
  return getItem (itemNo);
skal være:
  return getItem (ino);
for ikke at loope uendeligt.
Avatar billede arne_v Ekspert
30. november 2003 - 21:55 #5
public Item getItem (String itemNo) {
    int ino = Integer.parseInt(itemNo);
    if (ino >= 0 && ino < items.size()){
        return getItem (itemNo);
    } else {
        return null;
    }
}
Avatar billede arne_v Ekspert
30. november 2003 - 21:56 #6
Ikke engang nødvendigt da getItem(int) også checker.

public Item getItem (String itemNo) {
    return getItem (Integer.parseInt(itemNo));
}
Avatar billede montymus Nybegynder
30. november 2003 - 21:57 #7
Skal jeg ikke have en "for"løkke der????

er If statemented nok??
Avatar billede arne_v Ekspert
30. november 2003 - 22:00 #8
Nej det burde ikke vær enødvendigt.

Og det samme gælder en masse af de andre metoder.
Avatar billede montymus Nybegynder
30. november 2003 - 22:00 #9
k hehe


For at komme tilbage til det oprindelige sp..  kan i hjælpe mig med det...Jeg sidder her og bliver fortvivlet da jeg heller ikke kan finde noget i min bog om det
Avatar billede conrad Nybegynder
30. november 2003 - 22:02 #10
Er der ikke et problem i at bruge en Vector og så lade et item være identificeret ved dets entry i vectoren? I det øjeblik du sletter et item vil alle dem med højere indeks jo rykke sig en "mod venstre"
Avatar billede conrad Nybegynder
30. november 2003 - 22:03 #11
DVS
indsæt item1
indsæt item2
indsæt item3
remove item2
getitem item3 -> er der ikke mere
Avatar billede arne_v Ekspert
30. november 2003 - 22:04 #12
Hvis brugeren vælger punktet find item skal du indlæse det nummer der skal
findes, du kalder findItem metoden, hvis den returnerer null skriver du
"Ikke fundet" eller udskriver du item.
Avatar billede montymus Nybegynder
30. november 2003 - 22:05 #13
Nope der er intet prob i det da den helst selv skulle styrer hvor stor den skal være
Avatar billede arne_v Ekspert
30. november 2003 - 22:05 #14
Hvis man er klar over at et itemno ikke er fast for et givet item, så er det
vel ikke noget problem.

ALternativet til Vector ville være at bruge en HashMap og slå op med en key.
Avatar billede montymus Nybegynder
30. november 2003 - 22:06 #15
Hashmap har vi slet ikke lært endnu :)
Avatar billede arne_v Ekspert
30. november 2003 - 22:12 #16
Jeg lavede engang det her eksempel som måske kan give lidt inspiration
(ArrayList og Vector er meget ens):

package test;

import java.util.*;

public class FakturaTestExt {
  public static void main(String[] args) {
      KundeList kunder = new KundeList();
      VareList varer = new VareList();
      List fakturaer = new ArrayList();
      kunder.add(new Kunde("Hansen", "Pærevej 1"));
      kunder.add(new Kunde("Jensen", "Æblevej 2"));
      varer.add(new Vare("Sodavand", 5));
      varer.add(new Vare("Chokolade", 25));
      fakturaer.add(new Faktura(kunder.find("Hansen"), varer.find("Sodavand"), 30));
      fakturaer.add(new Faktura(kunder.find("Hansen"), varer.find("Chokolade"), 10));
      fakturaer.add(new Faktura(kunder.find("Jensen"), varer.find("Sodavand"), 60));
      System.out.println(kunder);
      System.out.println(varer);
      System.out.println(fakturaer);
  }
}
class KundeList {
  private List list = new ArrayList();
  public void add(Kunde kunde) {
      list.add(kunde);
  }
  public Kunde get(int ix) {
      return (Kunde)list.get(ix);
  }
  public Kunde find(String navn) {
      for(int i = 0; i < list.size(); i++) {
        Kunde kunde = (Kunde)list.get(i);
        if(kunde.getNavn().equals(navn)) {
            return kunde;
        }
      }
      return null;
  }
  public String toString() {
      return list.toString();
  }
}
class VareList {
  private List list = new ArrayList();
  public void add(Vare vare) {
      list.add(vare);
  }
  public Vare get(int ix) {
      return (Vare)list.get(ix);
  }
  public Vare find(String navn) {
      for(int i = 0; i < list.size(); i++) {
        Vare vare = (Vare)list.get(i);
        if(vare.getNavn().equals(navn)) {
            return vare;
        }
      }
      return null;
  }
  public String toString() {
      return list.toString();
  }
}

class Kunde {
  private String navn;
  private String adresse;
  public Kunde(String navn, String adresse) {
      this.navn = navn;
      this.adresse = adresse;
  }
  public String getNavn() {
      return navn;
  }
  public String getAdresse() {
      return adresse;
  }
  public void setNavn(String navn) {
      this.navn = navn;
  }
  public void setAdresse(String adresse) {
      this.adresse = adresse;
  }
  public String toString() {
      return navn + ":" + adresse;
  }
}

class Vare {
  private String navn;
  private int pris;
  public Vare(String navn, int pris) {
      this.navn = navn;
      this.pris = pris;
  }
  public String getNavn() {
      return navn;
  }
  public int getPris() {
      return pris;
  }
  public void setNavn(String navn) {
      this.navn = navn;
  }
  public void setPris(int pris) {
      this.pris = pris;
  }
  public String toString() {
      return navn + ":" + pris;
  }
}

class Faktura {
  private Kunde kunde;
  private Vare vare;
  private int antal;
  public Faktura(Kunde kunde, Vare vare, int antal) {
      this.kunde = kunde;
      this.vare = vare;
      this.antal = antal;
  }
  public Kunde getKunde() {
      return kunde;
  }
  public Vare getVare() {
      return vare;
  }
  public int getAntal() {
      return antal;
  }
  public void setKunde(Kunde kunde) {
      this.kunde = kunde;
  }
  public void setVare(Vare vare) {
      this.vare = vare;
  }
  public void setAntal(int antal) {
      this.antal = antal;
  }
  public String toString() {
      return kunde + ":" + vare + ":" + antal;
  }
}
Avatar billede montymus Nybegynder
30. november 2003 - 22:14 #17
din 2find" er public min skla være void er det et problem??
Avatar billede arne_v Ekspert
30. november 2003 - 22:16 #18
public angiver at den kan kaldes af al mulig kode.

void angiver at den ike returnerer noget.

De er ikke gensidigt udelukkende.
Avatar billede arne_v Ekspert
30. november 2003 - 22:17 #19
Men du siger altså at du vil have noget a la:

void findItem() {
  int itemno = ...
  Item item = getItem(itemno);
  if(item != null) {
      // display item
  } else {
      // tell item doesnot exist
  }
}
Avatar billede montymus Nybegynder
30. november 2003 - 22:18 #20
jepper
Avatar billede montymus Nybegynder
30. november 2003 - 22:19 #21
Bare lige....Mit ItemNo er en String er det et prob????
Avatar billede arne_v Ekspert
30. november 2003 - 22:20 #22
Næh.

Du har jo en getItem med String som argument.
Avatar billede montymus Nybegynder
30. november 2003 - 22:20 #23
Og man skal taste et Item-nummer for at finde det..

Citat: Man indlæser et nummer fra skærmen ud fra dette nummer findes det rette Item-objekt. som udkrives  på skærmen. Hvis det ikke findes udksrives en relevant fejlmeddelse
Avatar billede montymus Nybegynder
30. november 2003 - 22:21 #24
Tror ikke jeg var i skole den dag vi lærte det(Hvis vi da har lært det) jeg kan INTET huske om hvordan man gør
Avatar billede arne_v Ekspert
30. november 2003 - 22:27 #25
Det er vel bare:
  String itemNo = JOptionPane.showInputDialog("Indtast item nummer");
til indlæsning og enten:
  JOptionPane.showMessageDialog(null,item.getX() + " " + item.getY());
eller:
  JOptionPane.showMessageDialog(null,"Eksisterer ikke");
til udskrivning.
Avatar billede montymus Nybegynder
30. november 2003 - 22:28 #26
Damn er det virkelig så simpelt?? hehe
Avatar billede montymus Nybegynder
30. november 2003 - 22:29 #27
Så mangler jeg bare at smide en if og else sætning ind ikke??
Avatar billede arne_v Ekspert
30. november 2003 - 22:32 #28
Jeg skitserede lidt logik 22:17:58.
Avatar billede montymus Nybegynder
30. november 2003 - 22:33 #29
jaja jeg er bare langsom i optrækket :)
Avatar billede arne_v Ekspert
30. november 2003 - 22:33 #30
Og så skal du lige have koden til at compile og køre.

:-)
Avatar billede montymus Nybegynder
30. november 2003 - 22:34 #31
ja hehe det bliver det næste...Nåh nej jeg skal lige have lavet min app først..
Avatar billede montymus Nybegynder
30. november 2003 - 22:36 #32
Jeg smutter i seng...Skriver imorgen hvis jeg skulle få brug for mere hjælpe...Sov godt og MANGE tak for hjælpen
Avatar billede arne_v Ekspert
01. december 2003 - 21:26 #33
Virker det ?
Avatar billede arne_v Ekspert
01. december 2003 - 21:27 #34
Og et svar såfremt det virker ...
Avatar billede montymus Nybegynder
03. december 2003 - 19:48 #35
Det meste virker...Kan bare ikke få min fintItem() til at virke..men ligemeget nu ..Jeg har afleveret opgaven...

Men jeg har tænkt mig at lave den igen bare for sjov...

Hvis i er interesseret i at se opgaven dvs oplægget så sig til så kan jeg maile den til jer..
Avatar billede arne_v Ekspert
03. december 2003 - 20:04 #36
Hvis du mailer koden så kunne jeg da godt bruge 5 minutter på at se om jeg
kunne f¨å findItem til at virke.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester