Avatar billede data2k.dk Nybegynder
08. november 2004 - 00:49 Der er 11 kommentarer og
1 løsning

Returnere et object fra en metode

hvordan lader metoden returnere en reference til ’hele’ det fundne Person-objekt? jeg skal nemlig have flere retur værdier så bliver nød til at have fat i objected.
Har en ide om det noget lignende public Object findNavnViaTlfNr(int n)
men når man siger return Object så husker jeg ikke hvordan man skriver det.. men kom med jeres bud


public String findNavnViaTlfNr(int n)
  {
    boolean found = false;
    int i = 0;
    while(i< TListe.size() && !found)
    {
      if ( ((Person)TListe.get(i)).tlfNr ==(n) )
      {
        found = true;       
      }
      else
        i++;
    }
    if (i< TListe.size())
      return ((Person)TListe.get(i)).navn;
    else
      return "";
  }
Avatar billede mikkelbm Nybegynder
08. november 2004 - 00:51 #1
Hvad med: 

  public Person findNavnViaTlfNr(int n)
  {
    boolean found = false;
    int i = 0;
    while(i< TListe.size() && !found)
    {
      if ( ((Person)TListe.get(i)).tlfNr ==(n) )
      {
        found = true;       
      }
      else
        i++;
    }
    if (i< TListe.size())
      return (Person)TListe.get(i);
    else
      return null;
  }
Avatar billede mikkelbm Nybegynder
08. november 2004 - 00:54 #2
En lidt mere simpel udgave, men som gør det samme:

  public Person findNavnViaTlfNr(int n)
  {
    for (int i = 0; i < TListe.size(); i++)
    {
      if ( ((Person)TListe.get(i)).tlfNr ==(n) )
      {
        return (Person)TListe.get(i);
      }
    }
    return null;
  }
Avatar billede data2k.dk Nybegynder
08. november 2004 - 00:58 #3
hmm... kalder metoden og så vil bruge noget af det der kommer tilbage hvordan gør jeg så? ... metoden bliver kaldt med i denne kode her


private void jButton4_actionPerformed(ActionEvent e)
  {
    int nr = Integer.parseInt( jTextField2.getText());
    String navn = tc.findNavnViaTlfNr(nr);
    if (nr >=0)
      {
      jTextField1.setText("" + navn );
      }
    else
    {
      jTextField1.setText("");
      jLabel3.setText("Data findes ikke!");
   
  }
}}
Avatar billede mikkelbm Nybegynder
08. november 2004 - 01:00 #4
Noget a la:

  private void jButton4_actionPerformed(ActionEvent e)
  {
    int nr = Integer.parseInt( jTextField2.getText());
    Person person = tc.findNavnViaTlfNr(nr);
    if (person != null)
    {
      jTextField1.setText(person.getNavn());
    }
    else
    {
      jTextField1.setText("");
      jLabel3.setText("Data findes ikke!");
    }
  }

Bemærk!

Denne linje:
jTextField1.setText("" + person.getNavn());

kræver at du har en metode i personklassen der hedder getNavn()
Avatar billede data2k.dk Nybegynder
08. november 2004 - 01:05 #5
smid et svar: ) hehe
Avatar billede mikkelbm Nybegynder
08. november 2004 - 01:05 #6
Svar
Avatar billede data2k.dk Nybegynder
08. november 2004 - 01:06 #7
jTextField1.setText("" + person.navn);

skrev bare navn efter person... og selvfølgelig kan man ikke gemme en objekt reference i en string:p

jeg lære noget nyt hver dag hehe
Avatar billede data2k.dk Nybegynder
09. november 2004 - 12:28 #8
mikkelbm:

vil bare lige spørge om noget så jeg helt har forstået dette og selv kan finde ud af det senere hen: )

Person person = tc.findNavnViaTlfNr(nr);

hvordan skal man forstå denne linie?

at personen nu får værdien der kommer tilbage fra metoden ?tc.findNavnViaTlfNr(nr);
kunne man ikke have skrevet

Object person = tc.findNavnViaTlfNr(nr);

?

bare så jeg bliver lidt klogere: )
Avatar billede data2k.dk Nybegynder
12. november 2004 - 11:52 #9
kunne du ikke kort forklare det?
Avatar billede mikkelbm Nybegynder
12. november 2004 - 13:16 #10
Beklager - havde overset den mail jeg fik om denne tråd...

Men:

Person person = tc.findNavnViaTlfNr(nr);

og

Object person = tc.findNavnViaTlfNr(nr);

Vil begge fungere.
Da alle objekter i Java arver fra klassen Object, kan du sætte alle objekter lig med Object. Men har du lavet dine egne objekter (f.eks. Person) kan du, hvis du har referencen i Object, ikke bruge dine metoder.
Det kan du derimode, hvis du fortæller den, at variablen 'person' skal være af typen 'Person', og da din metode findNavn(nr) returnerer et objekt af typen 'Person' kan det lade sig gøre.
Gemmer du referencen i Object er du nødt til at caste til den ønskede type:
Person p = (Person)person;

nu har du så flyttet referencen over i p, og fortalt den (ved at caste) at den er af typen 'Person'


Håber ikke det er alt for sort snak - men du spørger bare løs, hvis der er noget der er kryptisk :)
Avatar billede mikkelbm Nybegynder
12. november 2004 - 13:20 #11
Og ja, du har ret i at:

Person person = tc.findNavnViaTlfNr(nr);

giver 'person' værdien/referencen der bliver fundet i metoden.
Avatar billede data2k.dk Nybegynder
12. november 2004 - 14:16 #12
tak for det: ) tror nogenlunde jeg er med... skal bare lige lave nogen øvelser med det først så det rigtigt sidder! Det var rart at få styr på det: )
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