[JAVA] global variabelen

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

  • nick_vh
  • Registratie: Juli 2004
  • Laatst online: 11-04-2025
Hey,

ik ben nogal nieuw op java gebied en ik heb een aantal methoden gemaakt alleen krijg ik het niet voor elkaar om bepaalde variabelen te gebruiken over heel het programma, dus global in plaats van local zou je kunnen zeggen,

als iemand mij hier in de juiste richting zou kunnen duwen, alvast bedankt :)

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-05 21:24

NMe

Quia Ego Sic Dico.

[google=global variables in java]?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • nick_vh
  • Registratie: Juli 2004
  • Laatst online: 11-04-2025
jah domme ik

dit topic mag (nog niet) gesloten worden wegens mijn dommigheid niet eerst te zoeken :)

[ Voor 6% gewijzigd door nick_vh op 21-11-2004 20:45 ]


  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Globale variabelen moet je zoveel mogelijk vermijden. (vanwege een heel aantal redenen die ik even weglaat). Maar misschien kan je wat meer over je probleem vertellen, want er zijn vele wegen die naar Rome lijden, maar we zoeken de korste en de meest vlakke en daarvoor is wat meer informatie gewenst.

Een variabele kan lokaal zijn in:
- een block ( tussen { } haakjes)
- een methode (normaal lokale var genoemd)
- een object (een field genoemd), in alle methodes zichtbaar, elk object apart
- een class (een static field genoemd), in alle methodes zichtbaar, alle objecten zien hetzelfde

"Beauty is the ultimate defence against complexity." David Gelernter


Verwijderd

Java kent geen global variables... Variabelen zijn alleen bekend binnen de context van een class. Hierbij kan je dan nog kiezen voor instance-based of class-based variables. Wat jij hoogstwaarschijnlijk wilt hebben zijn class-based variables.
voorbeeld:
code:
1
2
3
4
5
6
package net.tweakers.voorbeeld;

public class Variables {
  public static int varEen = 0;
  public static String varTwee = new String();
}


Door nu in andere classes als import op te nemen:
code:
1
import net.tweakers.voorbeeld.Variables;


Kunt je middels de volgende code je variabelen accessen:
code:
1
2
Variables.varEen = 123;
Variables.varTwee = "Dit is een voorbeeld String";

[ Voor 5% gewijzigd door Verwijderd op 21-11-2004 20:33 ]


  • nick_vh
  • Registratie: Juli 2004
  • Laatst online: 11-04-2025
wel,

ik heb 3 methoden

invoeren
uitrekenen
uitvoeren

in invoeren bepaal ik een aantal variabelen die ik in uitrekenen nodig heb.

nu met invoeren.x te gebruiken in uitrekenen werkt dit blijkbaar niet al te best : :/

edit : vergeten bij te zeggen dat ik

public void invoeren(){

gebruik

[ Voor 15% gewijzigd door nick_vh op 21-11-2004 20:41 ]


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Misschien is Thinking in Java iets voor je. Gratis en aardig om te lezen. Zeker handig als je aan het beginnen bent en het forum niet wilt lastig vallen met startersvragen.

  • nick_vh
  • Registratie: Juli 2004
  • Laatst online: 11-04-2025
maar soms is het toch net iets eenvoudiger om het te vragen aan da al wat meer geavanceerde gebruikers dan voor 1 probleem een gans boek te lezen...

  • Eärendil
  • Registratie: Februari 2002
  • Laatst online: 07:46
nickske_v schreef op zondag 21 november 2004 @ 21:00:
maar soms is het toch net iets eenvoudiger om het te vragen aan da al wat meer geavanceerde gebruikers dan voor 1 probleem een gans boek te lezen...
Het is wel iets eenvoudiger, maar dit is dermate basic dat zulke kennis hier als bekend verondersteld wordt. Je bent nu aan het programmeren in een ObjectOriented-taal, maar je hebt het idee van OOP nog niet, door en dat leer je niet met dit soort dingen vragen, maar door er bijvoorbeeld een boek over te lezen.

Om je een zetje in de goede richting te geven:

Bijna alles is een object in Java, en die objecten behoren tot een bepaalde klasse. In een klasse wordt gespecificeerd welke eigenschappen (attributen) objecten van dat type hebben en wat ze kunnen (methodes). Een klasse ziet er dan ongeveer zo uit:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Rekening {
  /*
   * Dit is een attribuut van deze klasse, 
   * een variable die zichtbaar is vanuit de hele klasse
   */
  private int uitkomst;

  /*
   * Dit is een methode
   */
  public void invoeren() {
    /* Deze variabele is alleen zichtbaar in deze methode */ 
    int lokaleVariabele;
    //hier je code
  }
}

[ Voor 40% gewijzigd door Eärendil op 21-11-2004 21:39 ]


  • nick_vh
  • Registratie: Juli 2004
  • Laatst online: 11-04-2025
ok dit heb ik ondertussen inderdaad gevonden, maar waarom zeggen ze dan dat globale variablen in java niet bestaan.

Ik zat vooral in de knoei met mijn rijen globaal te maken, maar ik ben nog altijd op zoek! :)

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-05 21:24

NMe

Quia Ego Sic Dico.

nickske_v schreef op zondag 21 november 2004 @ 21:00:
maar soms is het toch net iets eenvoudiger om het te vragen aan da al wat meer geavanceerde gebruikers dan voor 1 probleem een gans boek te lezen...
Ja, en telkens als je een probleem hebt hier een vraag stellen, daar leer je van. :/

Doe het liever meteen goed, en leer de kennis die je nodig hebt uit een boek of een andere erkende bron. Daar doe je ons allemaal een plezier mee. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

nickske_v schreef op zondag 21 november 2004 @ 21:42:
ok dit heb ik ondertussen inderdaad gevonden, maar waarom zeggen ze dan dat globale variablen in java niet bestaan.

Ik zat vooral in de knoei met mijn rijen globaal te maken, maar ik ben nog altijd op zoek! :)
Globale variabelen bestaan niet, omdat ze altijd in de context van een class leven. Globale variabelen worden het dichtst benaderd met mijn niet al te elegante oplossing. Dit is echter geen gebruikelijke aanpak in OO talen, maar voor elegantere oplossingen, moet je echt eerst wat meer leren over OO en aanverwante zaken.

  • nick_vh
  • Registratie: Juli 2004
  • Laatst online: 11-04-2025
ik heb het anders opgelost

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Project1 {
    int i=0, andere variabelen...

    public void ingeven(){
        int rij[] = new int[variable+1];
        //vullen van de rijen
    }
 
    public void uitrekenen() {
        // berekenen
        for(i=0; i <= variable; i++){
            macht = (int)Math.pow(x,i);
            uitkomst = uitkomst + rij[i]*macht;
        }
    }
...


maar wat mij dus niet lukt is die rij "globaal" maken, maar in dat opzicht dat hij er staat en dat ik de waarde van de lengte van de array kan invullen in de eerste methode en dus kan uitgelezen worden in de 2de

Verwijderd

Probeer dan es dit stukje code. Let op waar rij[] nu gedeclareerd wordt.

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Project1 {
    int i=0, andere variabelen...
    int rij[];

    public void ingeven(){
        rij = new int[variable+1];
        //vullen van de rijen
    }
 
    public void uitrekenen() {
        // berekenen
        for(i=0; i <= variable; i++){
            macht = (int)Math.pow(x,i);
            uitkomst = uitkomst + rij[i]*macht;
        }
    }
...

  • nick_vh
  • Registratie: Juli 2004
  • Laatst online: 11-04-2025
dan krijg ik deze foutmelding

Project1.java:20: not a statement
rij[] = new int[variabele+1];
^
Project1.java:20: ';' expected
rij[] = new int[variabele+1];
^
2 errors

waarbij rijnummer 20 dus net onder public void ingeven(){ staat

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Neem zijn code nu goed over, dus zonder [] achter de initialisatie van rij.

"Beauty is the ultimate defence against complexity." David Gelernter


  • nick_vh
  • Registratie: Juli 2004
  • Laatst online: 11-04-2025
Ok sorry ben al net iets te lang wakker :)

hmm nu geef de compiler geen fouten meer maar als ik het programma uitvoer blijft de waarde na de berekening met de waarden van de array 0.0

deze wordt blijkbaar niet teruggestuurd naar mijn class

Nuja, ik ga er eens op zoeken, bedankt alvast!

[ Voor 7% gewijzigd door nick_vh op 22-11-2004 00:02 ]

Pagina: 1