/ 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
static eller ej ....
Fra : Simon...


Dato : 28-04-02 15:35

Hej,

jeg sidder og skriver på en opgave vi har fået i (en eksamensopgave), og nu
virker alt lige pånær det allersidste, hvor jeg i en klasse med en main skal
kalde en metode lavet i samme klasse - når jeg kalder metoden, getCount()
(der selvfølgeligt er udenfor mainen) siger compileren:
===
tempo.java [15:1] non-static method getCount() cannot be referenced from a
static context
System.out.println(getCount());
===

hvis jeg skriver static i metoden, så der kommer til at stå "public static
String getCount()"
går det helt galt, for den skal bruge en metode i en anden klassefil (class)
som så giver problemer...

jeg har prøvet at fjerne static fra mainen, men så kører den og skriver
bare:

===
java.lang.NoSuchMethodError: main
Exception in thread "main"
===

Jeg har sendt filerne til dk.binaer under "Simon's JAVA"

Hvad kan jeg gøre her ?

mange tak !

mvh.Simon


__________________________________________________________________ Simon
Administrator of guden.dk / binaer.dk ICQ#: 14558836 Current ICQ status: +
More ways to contact me
__________________________________________________________________



 
 
Thorbjørn Ravn Ander~ (28-04-2002)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 28-04-02 16:13

"Simon..." <devnull@linux.org> writes:

> ===
> tempo.java [15:1] non-static method getCount() cannot be referenced from a
> static context
> System.out.println(getCount());
> ===

Så længe du befinder dig i en static metode, kan du kun kalde metoder
der er statiske. Hvis du har brug for ikke-statiske metoder, _skal_
du oprette et objekt og tilgå dem via det.

Alstå noget i stil med

SimonsObjekt s = new SimonsObjekt();
System.out.println( s.getCount());
--
Thorbjørn Ravn Andersen
http://homepage.mac.com/ravn

Mikkel Bundgaard (28-04-2002)
Kommentar
Fra : Mikkel Bundgaard


Dato : 28-04-02 16:27

Simon... <devnull@linux.org> wrote:
> Hej,
>
> jeg sidder og skriver på en opgave vi har fået i (en
> eksamensopgave), og nu virker alt lige pånær det allersidste,
> hvor jeg i en klasse med en main skal kalde en metode lavet i
> samme klasse - når jeg kalder metoden, getCount() (der
> selvfølgeligt er udenfor mainen) siger compileren: ===
> tempo.java [15:1] non-static method getCount() cannot be
> referenced from a static context
> System.out.println(getCount());
<SNIP>
> Jeg har sendt filerne til dk.binaer under "Simon's JAVA"
>
> Hvad kan jeg gøre her ?
>
> mange tak !
>
> mvh.Simon
Hej Simon

Så vidt jeg lige kan se fra din kode, skal linien
System.out.println(getCount());
laves om til
System.out.println(TempoMedlemmer.getCount());

Et par gode råd mm:
Du behøver ikke de to import sætninger i dine klasser (så længe de
ligger i samme mappe/pakke).
Pr. konvention skal klassenavne altid starte med et Stort bogstav.
Hvorimod variabelnavne skal starte med et lille bogstav (du har
vidst byttet rundt på dem ).
Du kan evt. bruge klassen StringBuffer i stedet for String ved dine
mange streg-konkateneringer.

Specielt til klassen medlem:
Du mangler en set-metode til variablen Kontingent. Desuden giver
linien
Kontingent = getKontingent();
i konstruktøren ikke så meget mening da det eneste getKontingent()
er at returnere Kontingent. Dvs. at det kan læses som
Kontingent = Kontingent;

Specielt til klassen tempo:
Lad din konstruktør tage størrelsen på arrayet som agument, på denne
måde kan du selv bestemme antallet af medlemmer og ikke kun 5 (eller
du kan bruge klassen ArrayList som et dynamisk array).
I dine for-løkker løber du fra 0 til 3. Dvs. at hvis arrayet var
helt fyldt op (dvs. indeholde 5 medlemmer), så ville du aldrig komme
til dit sidste medlem. Du skal hellere bruge index i din for-løkker
(heller ikke smart både at bruge det samme navn (index) både til
antallet af medlemmer og som tæller i dine for-løkker):
for (int i = 0; i < index; i++)

Håber du kan bruge alt den kritik til noget
--
Mikkel Bundgaard
IT University of Copenhagen
http://officehelp.gone.dk
Codito, Ergo Sum



Morten (28-04-2002)
Kommentar
Fra : Morten


Dato : 28-04-02 16:49

Simon... wrote:
> Hej,
>
> jeg sidder og skriver på en opgave vi har fået i (en eksamensopgave), og nu
> virker alt lige pånær det allersidste, hvor jeg i en klasse med en main skal
> kalde en metode lavet i samme klasse - når jeg kalder metoden, getCount()
> (der selvfølgeligt er udenfor mainen) siger compileren:
> ===
> tempo.java [15:1] non-static method getCount() cannot be referenced from a
> static context
> System.out.println(getCount());
> ===

Du kalder en metode der ikke er statisk. Man kan her
1. Undersøge om den burde tilhøre et objekt, og så objektRef.getCount();
2. Gøre metoden statisk - som du også forsøger.

> hvis jeg skriver static i metoden, så der kommer til at stå "public static
> String getCount()"
> går det helt galt, for den skal bruge en metode i en anden klassefil (class)
> som så giver problemer...

Hvad fejl får du?

Et noget er statisk, betyder at det eksisterer i en context hvor alle
referencer til det statisk objekt/kode peger på det samme. Hvis en
metode ikke er statisk, giver det ingen mening at kalde
metodeNavn(args), da den - som ikke statisk - tilhører et instantieret
objekt.

>
> jeg har prøvet at fjerne static fra mainen, men så kører den og skriver
> bare:
>
> ===
> java.lang.NoSuchMethodError: main
> Exception in thread "main"
> ===

Main skal altid være static. Den er din boot strap hvis du vil eksekvere
et program.

> Jeg har sendt filerne til dk.binaer under "Simon's JAVA"

Du kan fint poste java her.

Mvh Morten


Simon... (28-04-2002)
Kommentar
Fra : Simon...


Dato : 28-04-02 19:45

Så blev jeg færdig med det, tak for hjælpen allesammen, je ghar postet det
færdige i dk.binaer under "Simon's JAVA #2 - Færdigt..."
hvis det skulle have interesse på den ene eller anden måde...

tak igen.

mvh.Simon



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

Månedens bedste
Årets bedste
Sidste års bedste