[Java] Methode

Pagina: 1
Acties:
  • 289 views sinds 30-01-2008
  • Reageer

  • J.Hollemans
  • Registratie: September 2001
  • Laatst online: 03-10-2025
Het is vast iets kleins, maar als ik het volgende compile:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Facul
{
    public int faculteit(int g)
    {
        int teller;

        for (teller = g - 1; teller > 1; teller--)
        {
            g *= teller;
        }

        return g;
    }
    
    public static void main(String[] args)
    {
        int getal = 6;
        int facGetal = faculteit(getal);

        System.out.print(getal + "! = " + facGetal);
    }
}

krijg ik de melding:
code:
1
2
3
line 18: Can't make static reference to method int Facult(int) in class Facul
int facGetal = faculteit(getal);
                ^

waar wordt dit door veroorzaakt ?

Far from being some stuffy science, writing regular expressions is closer to an art.


  • TimMer
  • Registratie: Februari 2000
  • Niet online
Waarschijnlijk omdat je de klasse zelf aanroept binnen zijn eigen constructor. Maar goed, ik ben nog een beetje een Java-newbie, zou dus fout kunnen zijn... :z

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

je roept een memeber fucntie aan van een object zonder het object aan te maken.

dit moet je main zijn:
code:
1
2
3
4
5
6
7
8
 public static void main(String[] args)
    {
        int getal = 6;
        Facul mijnFacul = new Facul();
        int facGetal = mijnFacul.faculteit(getal);

        System.out.print(getal + "! = " + facGetal);
    }

Je hebt grofweg 2 soorten methoden in java: static methoden die bij de class horen en dus altijd op te roepen zijn (daarom is main ook static)

en niet-static: methoden die je ook op het object af kan roepen. Vanuit een static method heb je geen toegang tot niet statische variabelen en methoden, en dat is ook precies wat de foutmelding zegt..

(je had het probleem dus ook op kunnen lossen door
de method faculteit te veranderen in:
public static int faculteit(int g)

maar dit is minder mooi, je gebruikt nu namelijk niet de OO techniek die java zo'n mooie taal maakt :)