/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
at vende to tal ??
Fra : Simon...


Dato : 21-08-02 19:50

Hej,

jeg sidder lige med en java opgave jeg ik ka hit u a....

jeg har min main her:

int tal1 = 3;
int tal2 = 5;

doVend(tal1,tal2);

de skal vendes af én metode... hvordan gøres det ??

har prøvet at lave en der returnerer 2 (return (tal1 && tal2)
men den æder den ikke... :/
sådan:

public static int doVend (int tal1, int tal2)
{
int talTemp = tal1;
tal1 = tal2;
tal2 = talTemp;

return ???????

}

hvordan får jeg dem over i to variable... har min lærer stillet en dum
opgave, eller har jeg bare misset noget... ??

Jeg kunne jo godt bare returnerer en String hvor der så var byttet om på
dem, men tvivler på det var det han mente med opgaven :/

tak

mvh.Simon







 
 
Daniel Jacobsen (22-08-2002)
Kommentar
Fra : Daniel Jacobsen


Dato : 22-08-02 05:37

Hejsa!

Du skal bare erklære variablene som globale og gøre din metode destruktiv:

class MinKlasse {
int tal1 = 3;
int tal2 = 5;

public static void main(String[] args) {
doVend();
}
public void doVend () {
int talTemp = tal1;
tal1 = tal2;
tal2 = talTemp;
}
}

En anden mulighed er, at du laver et int[] hvor du indlejre de to
int-værdier:

class MinKlasse {
public static void main(String[] args) {
int tal1 = 3;
int tal2 = 5;
int[] mineTal = { tal1, tal2 };

doVend(mineTal);
}
public int[] doVend (int[] mineTal) {
int talTemp = mineTal[0];
mineTal[0] = mineTal[1];
mineTal[1] = talTemp;
return mineTal
}
}

Mvh. Daniel



Daniel Jacobsen (22-08-2002)
Kommentar
Fra : Daniel Jacobsen


Dato : 22-08-02 06:01

Øh....

Og så glemmer jeg, at første eksempel ikke kan laves i en statisk
sammenhæng.... (hehe)
Så lav det i en klasse for sig, så kan du godt :)

Mvh. Daniel J.




Simon... (21-08-2002)
Kommentar
Fra : Simon...


Dato : 21-08-02 21:32

oki da - det problem opdagede jeg også :)
-Simon

"Daniel Jacobsen" <dj@g-a-f.dk> skrev i en meddelelse
news:ak0rda$1gbd$1@news.cybercity.dk...
> Øh....
>
> Og så glemmer jeg, at første eksempel ikke kan laves i en statisk
> sammenhæng.... (hehe)
> Så lav det i en klasse for sig, så kan du godt :)
>
> Mvh. Daniel J.
>
>
>



Simon... (21-08-2002)
Kommentar
Fra : Simon...


Dato : 21-08-02 21:02

tak begge to,
jeg kigger på det.
havde slet ikke tænkt i array tanker :)

mvh.Simon



Simon... (21-08-2002)
Kommentar
Fra : Simon...


Dato : 21-08-02 21:08


> Du skal bare erklære variablene som globale og gøre din metode destruktiv:

> class MinKlasse {
> int tal1 = 3;
> int tal2 = 5;

hvordan var det lige jeg gjorde det i min main ?? prøvede at sætte public
foran uden resultat, og global var ikke et reserveret ord åbenbart..?¿
-Simon



Daniel Jacobsen (22-08-2002)
Kommentar
Fra : Daniel Jacobsen


Dato : 22-08-02 10:16

Global er ikke et reserveret ord, men et begreb der dækker over variable
erklæret i klassen og ikke i en metode...
At en metode er desktruktiv betyder blot, at den ændrer direkte i
(klasse)variable og returnerer ikke nogle nye.

Mvh. Daniel J.



Brian Matzon (21-08-2002)
Kommentar
Fra : Brian Matzon


Dato : 21-08-02 20:42

Simon... wrote:
> Hej,
>
> jeg sidder lige med en java opgave jeg ik ka hit u a....
>
> jeg har min main her:
>
> int tal1 = 3;
> int tal2 = 5;
>
> doVend(tal1,tal2);
>
> de skal vendes af én metode... hvordan gøres det ??
Hvis løsningen skal laves i java, har du et problem.
Alle basic types bliver i Java overført som pass-by-value. Dvs at selve
tallene 'tal'1 & 'tal2' vil blive overført til metoden som 3, 5. Du kan
gøre lige hvad du vil med de tal inde i metoden, den vil IKKE kunne
ændre på tal1 & tal2. Du kan kun swappe objekter, hvis du kan ændre på
selve indholdet af objektet, da alle objekter bliver overført som
pass-by-reference.

/Brian Matzon



Christian Hemmingsen (22-08-2002)
Kommentar
Fra : Christian Hemmingsen


Dato : 22-08-02 01:00

Brian Matzon <brian@matzon.dk> writes:

> Simon... wrote:
> > Hej,
> > jeg sidder lige med en java opgave jeg ik ka hit u a....
> > jeg har min main her:
> > int tal1 = 3;
> > int tal2 = 5;
> > doVend(tal1,tal2);
> > de skal vendes af én metode... hvordan gøres det ??
> Hvis løsningen skal laves i java, har du et problem.
> Alle basic types bliver i Java overført som pass-by-value. Dvs at
> selve tallene 'tal'1 & 'tal2' vil blive overført til metoden som 3,
> 5. Du kan gøre lige hvad du vil med de tal inde i metoden, den vil
> IKKE kunne ændre på tal1 & tal2. Du kan kun swappe objekter, hvis du
> kan ændre på selve indholdet af objektet, da alle objekter bliver
> overført som pass-by-reference.

Der intet i java der bliver overført som pass-by-reference. Alle
funktionsargumenter bliver overført som pass-by-value.

--
Christian Hemmingsen

Brian Matzon (22-08-2002)
Kommentar
Fra : Brian Matzon


Dato : 22-08-02 01:12

Christian Hemmingsen wrote:
> Der intet i java der bliver overført som pass-by-reference. Alle
> funktionsargumenter bliver overført som pass-by-value.
Yes, du har ret:
"Java manipulates objects 'by reference,' but it passes object
references to methods 'by value.'" As a result, you cannot write a
standard swap method to swap objects.

/Brian Matzon


Henrik Høegh (24-08-2002)
Kommentar
Fra : Henrik Høegh


Dato : 24-08-02 18:59

Hey,

> > jeg sidder lige med en java opgave jeg ik ka hit u a....
> >
> > jeg har min main her:
> >
> > int tal1 = 3;
> > int tal2 = 5;
> >
> > doVend(tal1,tal2);
> >
> > de skal vendes af én metode... hvordan gøres det ??
> Hvis løsningen skal laves i java, har du et problem.
> Alle basic types bliver i Java overført som pass-by-value. Dvs at selve
> tallene 'tal'1 & 'tal2' vil blive overført til metoden som 3, 5. Du kan
> gøre lige hvad du vil med de tal inde i metoden, den vil IKKE kunne
> ændre på tal1 & tal2. Du kan kun swappe objekter, hvis du kan ændre på
> selve indholdet af objektet, da alle objekter bliver overført som
> pass-by-reference.
>
Sidder lige og keder mig... kan det heller ikke lade sig gøre, hvis han
bruger this foran?

Venlig hilsen
Henrik Høegh



Esben Mose Hansen (24-08-2002)
Kommentar
Fra : Esben Mose Hansen


Dato : 24-08-02 22:35

Henrik Høegh wrote:
> Hey,
>
>
>>>jeg sidder lige med en java opgave jeg ik ka hit u a....
>>>
>>>jeg har min main her:
>>>
>>>int tal1 = 3;
>>>int tal2 = 5;
>>>
>>>doVend(tal1,tal2);
>>>
>>>de skal vendes af én metode... hvordan gøres det ??
>>
>>Hvis løsningen skal laves i java, har du et problem.
>>Alle basic types bliver i Java overført som pass-by-value. Dvs at selve
>>tallene 'tal'1 & 'tal2' vil blive overført til metoden som 3, 5. Du kan
>>gøre lige hvad du vil med de tal inde i metoden, den vil IKKE kunne
>>ændre på tal1 & tal2. Du kan kun swappe objekter, hvis du kan ændre på
>>selve indholdet af objektet, da alle objekter bliver overført som
>>pass-by-reference.
>>
>
> Sidder lige og keder mig... kan det heller ikke lade sig gøre, hvis han
> bruger this foran?

Beklager. Du skal bruge en måde at passe-by-reference på i Java --- hvad
Java ikke har. For illustrationens skyld: I C++ ville man kunne skrive

void swap(int& tal1, int& tal2) {... }

Java er et nemt sprog I dette tilfælde skal man bare huske at

1) Der finde kun built-in/primitive type; samt pointere til objekter;
2) Alle funktioner er pass-by-value.

Den "rigtige" løsning her i selvfølgelig indkapsling:

Int tal1 = new Int(3);
Int tal2 = new Int(5);
tal1.swap(tal2);
// tal1.value()=5; tal2.value()=3

hvor
class Int {
   private int value;
   int value() { return value; }
   void setvalue(int val) { value = val; }
   
   void swap(Int rhs) {
      int temp = rhs.value();
      rhs.setValue(value());
      setvalue(temp);
   }
}

Men Java sutter lidt (IMHO) til den slags
"lav-klasser-der-opfører-sig-ligesom-built-in-types" opgaver. Ligesom
Java (og C++) har en alvorlig mangel: multifunktioner....

--
mvh. Esben
home.worldonline.dk/~mesben


Michael Berg (04-09-2002)
Kommentar
Fra : Michael Berg


Dato : 04-09-02 10:27

Hej Esben,

> 1) Der finde kun built-in/primitive type; samt pointere til objekter;

Det er vel sandt også for C++ ?

> 2) Alle funktioner er pass-by-value.

Alle parametre fungerer som pass by value.

> Men Java sutter lidt (IMHO) til den slags
> "lav-klasser-der-opfører-sig-ligesom-built-in-types" opgaver. Ligesom

Sært som "swap" altid optræder i kursusmateriale. Jeg har i min tid som Java
udvikler endnu ikke haft behov for at vende to integers, og ærlig talt hvis
jeg skulle gøre det, så ville jeg nok gøre det lokalt i den konkrete metode
jeg var i i stedet for at opfinde en seperat metode til det

> Java (og C++) har en alvorlig mangel: multifunktioner....

Hvad er multifunktioner?

/Michael
www.i-seven.dk




Gravse (21-08-2002)
Kommentar
Fra : Gravse


Dato : 21-08-02 21:05

Dette virker hvis det er sådan du mener:

class Test {

public static void doVend(int tal1,int tal2)
{
int temp;
temp = tal1;
tal1 = tal2;
tal2 = temp;

System.out.println("Det første tal der er vendt om er: " + tal1 + " og det
andet er: " +tal2);

}

public static void main( String[] argv ) {
int tal1=10;
int tal2=20;

doVend(tal1,tal2);
}
}



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408937
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste