[Java] import klasse dobbelsteen

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

  • BasSpruit
  • Registratie: September 2002
  • Laatst online: 09-04-2022
ik ben met applets bezig (huiswerk.... je kent `t wel.) en nu heb ik een eigen klasse aangemaakt. vraag is nu: hoe moet ik die gebruiken in m`n applets...

ik heb de source in dezelfde directory gezet, maar ik krijg errors..

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Dobbelsteen
{
    // The following function is a placeholder for control initialization.
    // You should call this function from a constructor or initialization function.
    public void vcInit() {
        //{{INIT_CONTROLS
        //}}
    }
    
    private int Ogen;
    
    public int getOgen() {
        return Ogen;
    }
    
    public void gooi() {
        double r = Math.random() * 6;
        int i = (int) r;
        Ogen = i;
        }
    //{{DECLARE_CONTROLS
    //}}
}


ik krijg de volgende error(s)
sj -make -cdb TestApplet.cdb -g -d C:\Mijn Documenten\Huiswerk\Java\opdracht3\ -classpath C:\Mijn
Documenten\Huiswerk\Java\opdracht3\;C:\VisualCafe\JAVA\LIB\;C:\VisualCafe\JAVA\LIB\SYMCLASS.ZIP;C:\VisualCafe\JAVA\LIB\CLASSES.ZIP;C:\VisualCafe\JFC\SWINGALL.JAR;C:\VisualCafe\Bin\COMPONENTS\SFC.JAR;C:
\VisualCafe\Bin\COMPONENTS\SYMBEANS.JAR;C:\VisualCafe\JAVA\LIB\Collections.zip;C:\VisualCafe\JAVA\LIB\icebrowserbean.jar;C:\VisualCafe\JAVA\LIB\jsdk.jar;C:\VisualCafe\JAVA\LIB\SYMTOOLS.JAR C:\Mijn
Documenten\Huiswerk\Java\opdracht3\TestAplet.java
Error: C:\Mijn Documenten\Huiswerk\Java\opdracht3\TestAplet.java(59): Can't make static reference to method void gooi() in Dobbelsteen
Error: C:\Mijn Documenten\Huiswerk\Java\opdracht3\TestAplet.java(60): Can't make static reference to method int getOgen() in Dobbelsteen
Error: C:\Mijn Documenten\Huiswerk\Java\opdracht3\TestAplet.java(60): Incompatible type for =. Can't convert int to Dobbelsteen
3 error(s), 0 warning(s)
Build Failed
ik heb me rotgezocht in de API ref, maar kan niks vinden dat relevant is. doe ik iets verkeerd, of heb ik iets vergeten?

  • XKB
  • Registratie: Oktober 1999
  • Laatst online: 05-04-2021

XKB

Anonymous functional

Kijk eens of je methoden die je aanroept wel worden aangeroepen op een object instantie ipv static, zoals de foutmelding ook aangeeft. Misschien moet je nog even in het java boek kijken naar de verschillen tussen static en de andere modifiers.

Choose for Choice! Choose Linux! | src van icon


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Je probeert inderdaad ergens je methoden static aan te roepen volgens de foutmelding dus je doet ergens
Java:
1
Dobelsteen.gooi();

maar je zult eerst ergens een instantie van je dobbelsteen aan moeten maken dus je zou het bijvoorbeeld zo kunnen doen
Java:
1
2
3
Dobelsteen myDobbelsteen = new Dobbelsteen();
myDobbelsteen.gooi();
int aantalOgen = myDobbelsteen.getOgen();

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • BasSpruit
  • Registratie: September 2002
  • Laatst online: 09-04-2022
Ik heb geen id waar je het over hebt, maar misschien kan je met me meekijken... ik heb hier de code van het echte applet:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*
A basic extension of the com.sun.java.swing.JApplet class
*/

import com.sun.java.swing.*;
import java.awt.*;

public class TestAplet extends JApplet
{
    public void init()
    {
        // Take out this line if you don't use symantec.itools.net.RelativeURL or symantec.itools.awt.util.StatusScroller
        symantec.itools.lang.Context.setApplet(this);
        
        // This line prevents the "Swing: checked access to system event queue" message seen in some browsers.
        getRootPane().putClientProperty("defeatSystemEventQueueCheck", Boolean.TRUE);
        
        // This code is automatically generated by Visual Cafe when you add
        // components to the visual environment. It instantiates and initializes
        // the components. To modify the code, only use code syntax that matches
        // what Visual Cafe can generate, or Visual Cafe may be unable to back
        // parse your Java file into its visual environment.
        //{{INIT_CONTROLS
        getContentPane().setLayout(null);
        setSize(426,266);
        getContentPane().add(textField1);
        textField1.setBounds(96,24,100,24);
        button1.setLabel("Gooi");
        getContentPane().add(button1);
        button1.setBackground(java.awt.Color.lightGray);
        button1.setBounds(12,24,72,24);
        //}}
    
        //{{REGISTER_LISTENERS
        SymMouse aSymMouse = new SymMouse();
        button1.addMouseListener(aSymMouse);
        //}}
    }

    //{{DECLARE_CONTROLS
    java.awt.TextField textField1 = new java.awt.TextField();
    java.awt.Button button1 = new java.awt.Button();
    //}}

    class SymMouse extends java.awt.event.MouseAdapter
    {
        public void mouseClicked(java.awt.event.MouseEvent event)
        {
            Object object = event.getSource();
            if (object == button1)
                button1_MouseClicked(event);
        }
    }

    void button1_MouseClicked(java.awt.event.MouseEvent event)
    {
        // to do: code goes here.
        Dobbelsteen ogen = new Dobbelsteen();
        Dobbelsteen.gooi();
        ogen = Dobbelsteen.getOgen();
        textField1.setText(String.valueOf(ogen));
             
    }
}


de klasse word opgeroepen bij de laatste void

  • XKB
  • Registratie: Oktober 1999
  • Laatst online: 05-04-2021

XKB

Anonymous functional

Dit begint wel een beetje erop te lijken dat wij jouw huiswerk maken.

Zoals ik al eerder schreef:
Lees in je boek nog eens na wat een Klasse is, wat een instantie van een klasse is en hoe je daarop methoden aanroept. Verder is het erg handig na te lezen wat static precies doet.

Succes ermee.

Choose for Choice! Choose Linux! | src van icon


  • sphere
  • Registratie: Juli 2003
  • Laatst online: 27-05 09:23

sphere

Debian abuser

Je maakt een dobbelsteen object ogen aan, en vervolgens ga je drie regels eronder aan dat object een int assignen. Wat is je plan :+

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454


  • Amras
  • Registratie: Januari 2003
  • Laatst online: 01-10-2025
Vergelijk de code in je button1_MouseClicked eens met de code van rwb boven je post. ;)

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
je probleem zit in deze regels. Wat er precies het probleem is moet je zelf maar opzoeken

Java:
1
2
3
4
Dobbelsteen ogen = new Dobbelsteen();
Dobbelsteen.gooi();
ogen = Dobbelsteen.getOgen();
textField1.setText(String.valueOf(ogen));


als je je error nog eens leest en opzoekt wat dat betekend zul je het zelf wel op moeten kunnen lossen

[ Voor 18% gewijzigd door Woy op 15-03-2004 10:19 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Java:
1
2
3
        Dobbelsteen ogen = new Dobbelsteen();
        Dobbelsteen.gooi();
        ogen = Dobbelsteen.getOgen();

Ik snap je gedachtengang, maar wat nu als ik twee dobbelstenen nodig had:
Java:
1
2
3
        Dobbelsteen ogen = new Dobbelsteen();
        Dobbelsteen oren = new Dobbelsteen();
        Dobbelsteen.getOgen();

Wiens ogen vraag ik nu op dan?
Tip: Lees new als 'maak een nieuw ding van het type'

[ Voor 3% gewijzigd door Glimi op 15-03-2004 10:23 ]


  • BasSpruit
  • Registratie: September 2002
  • Laatst online: 09-04-2022
sphere2 schreef op 15 maart 2004 @ 10:11:
Je maakt een dobbelsteen object ogen aan, en vervolgens ga je drie regels eronder aan dat object een int assignen. Wat is je plan :+
het plan is dat ik een int ophaal die die klasse genereert (of zou moeten genereren) en die wegschrijft in een textveld... (dat is het id althans)

het boek (2 boeken geschreven door de open universiteit) dat ik heb, schrijft dat ik het op deze manier moet doen. bovendien begrijp ik die foutmelding ook niet. heb heb er wel les in gehad (2/3 jaar terug) en nu ben ik er voor de 2e dag mee bezig, dus ik heb een beetje hulp nodig.

  • Schmoove
  • Registratie: Juli 2001
  • Laatst online: 22:53
code:
1
2
3
4
Dobbelsteen ogen = new Dobbelsteen();
Dobbelsteen.gooi();
ogen = Dobbelsteen.getOgen();
textField1.setText(String.valueOf(ogen));

maak daar eens van:
code:
1
2
3
4
Dobbelsteen d1= new Dobbelsteen();
d1.gooi();
int ogen = d1.getOgen();
textField1.setText(String.valueOf(ogen));


Je moet natuurlijk als je .gooi() gebruikt wel de .gooi() methode aanroepen van je dobbelsteen (d1 in dit geval) en niet van 'Dobbelsteen'

Wil je 2 dobbelstenen, dan kun je het vervolgens zo doen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//creeer de dobbelstenen
Dobbelsteen d1= new Dobbelsteen();
Dobbelsteen d2= new Dobbelsteen();

//gooi beide dobbelstenen
d1.gooi();
d2.gooi();

//vraag het aantal ogen op van beide dobbelstenen
int  ogen_van_d1 = d1.getOgen();
int  ogen_van_d2 = d2.getOgen();

//set textfields
textField1.setText(String.valueOf(ogen_van_d1));
textField2.setText(String.valueOf(ogen_van_d2));

[ Voor 59% gewijzigd door Schmoove op 15-03-2004 10:28 ]


  • BasSpruit
  • Registratie: September 2002
  • Laatst online: 09-04-2022
rwb schreef op 15 maart 2004 @ 10:02:
Je probeert inderdaad ergens je methoden static aan te roepen volgens de foutmelding dus je doet ergens
Java:
1
Dobelsteen.gooi();

maar je zult eerst ergens een instantie van je dobbelsteen aan moeten maken dus je zou het bijvoorbeeld zo kunnen doen
Java:
1
2
3
Dobelsteen myDobbelsteen = new Dobbelsteen();
myDobbelsteen.gooi();
int aantalOgen = myDobbelsteen.getOgen();
dit werkt dus wel... de noob is weer helemaal blij. ik ben namelijk alleen vbscript gewend, dus ik heb een beetje moeite met de syntax...

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 21:44

Robtimus

me Robtimus no like you

ChaosDream schreef op 15 maart 2004 @ 10:23:
het boek (2 boeken geschreven door de open universiteit) dat ik heb, schrijft dat ik het op deze manier moet doen. bovendien begrijp ik die foutmelding ook niet. heb heb er wel les in gehad (2/3 jaar terug) en nu ben ik er voor de 2e dag mee bezig, dus ik heb een beetje hulp nodig.
Of je hebt verkeerd gelezen / het boek verkeerd geinterpreteerd, of je mag dat boek m.i. snel bij het oud papier gooien. Non-static methods op een static manier proberen aan te roepen kan dus niet he?

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • BasSpruit
  • Registratie: September 2002
  • Laatst online: 09-04-2022
IceManX schreef op 15 maart 2004 @ 10:32:
[...]
Of je hebt verkeerd gelezen / het boek verkeerd geinterpreteerd, of je mag dat boek m.i. snel bij het oud papier gooien. Non-static methods op een static manier proberen aan te roepen kan dus niet he?
dat heb ik dus op de moeilijke manier uitgevonden ja... :P jammer alleen dat die autogenerated HTML niet in mn IE werkt...

Verwijderd

ChaosDream schreef op 15 maart 2004 @ 11:58:
[...]


dat heb ik dus op de moeilijke manier uitgevonden ja... :P jammer alleen dat die autogenerated HTML niet in mn IE werkt...
Jammer dat Visual Cafe nog bestaat :P Moet je dat programma gebruiken voor je huiswerk e.d? :? Is het niet veel leerzamer om een console app te maken van bijv deze dobbelstenen? Lekker zelf coden, geen sleur-en-pleur ;)

  • BasSpruit
  • Registratie: September 2002
  • Laatst online: 09-04-2022
helaas kan ik op dit moment niet zonder. het is door school voorgeschreven, maar het werkt wel lekker. je moet alleen wel goed weten wat je aan het doen bent.

edit:

Wat ik ook niet snap is dat het onwijs moeilijk is om een variabele te converteren. die stomme compiler gaat om de haverklap op zn bek om de meest lullige dingetjes.

[code]String strTemp = textField1.getText();
double Temp = Double.valueOf(strTemp);[/code]

[quote]Error: C:\Mijn Documenten\Huiswerk\Java\opdracht4\onderdeel2\GradenBerekening.java(88): Incompatible type for vardeclaration. Can't convert java.lang.Double to double
[/quote]

[ Voor 60% gewijzigd door BasSpruit op 15-03-2004 14:19 ]


  • XKB
  • Registratie: Oktober 1999
  • Laatst online: 05-04-2021

XKB

Anonymous functional

Zoek op google maar eens "java wrapper classes". Elk primitief type in Java heeft zon wrapper class. Bijvoorbleeld: int heeft Integer, double Double etc.

Deze classes worden oa gebruikt voor utility functies zoals converteren naar Strings en vice versa. Tevens worden ze in Collections gebruikt.

Als je echt details wil weten moet je maar eens zoeken op auto-boxing, wat java dus niet heeft. (behalve die nieuwe JDK1.5, maar die is nog in beta)

Choose for Choice! Choose Linux! | src van icon


  • Jabbah
  • Registratie: Februari 2004
  • Laatst online: 26-05 20:20
Probeer de parseDouble methode eens:
code:
1
2
String strTemp = textField1.getText();
double Temp = Double.parseDouble(strTemp);


Overigens: double <> Double

  • BasSpruit
  • Registratie: September 2002
  • Laatst online: 09-04-2022
Jabbah schreef op 15 maart 2004 @ 15:15:
Probeer de parseDouble methode eens:
code:
1
2
String strTemp = textField1.getText();
double Temp = Double.parseDouble(strTemp);


Overigens: double <> Double
parseDouble bestaat volgens de compiler niet... en gebruik ik de kleine double ipv de grote Double, dan krijg ik de error "Can`t invoke a method on a double".

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 21:44

Robtimus

me Robtimus no like you

ChaosDream schreef op 15 maart 2004 @ 16:27:
[...]


parseDouble bestaat volgens de compiler niet... en gebruik ik de kleine double ipv de grote Double, dan krijg ik de error "Can`t invoke a method on a double".
Double.parseDouble(String), bestaat dus wel degelijk. Mits je hem een string meegeeft.

En anders zijn er nog de opties
Java:
1
2
double Temp = new Double(strTemp).doubleValue();
double temp = Double.valueOf(strTemp).doubleValue();

[ Voor 7% gewijzigd door Robtimus op 15-03-2004 16:34 ]

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • BasSpruit
  • Registratie: September 2002
  • Laatst online: 09-04-2022
die parseDouble die heb ik ook geprobeerd, maar volgens mijn prog bestaat ie toch echt niet. (ik heb visual cafe 3.0a)

met die doublevalue lukt `t echter wel. hoort `t altijd op die manier?

[ Voor 8% gewijzigd door BasSpruit op 15-03-2004 16:41 ]


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 21:44

Robtimus

me Robtimus no like you

Als je in de API kijkt (http://java.sun.com/j2se/1.4.2/docs/api/index.html, bookmarken!!) onder java.lang, klasse Double, dan zie je dat er 3 methods zijn die een double teruggeven. longBitsToDouble is niet wat je zoekt, dus blijven de andere 2 opties over. Voor doubleValue() heb je eerst een Double object nodig, en hoe krijg je die? Idd, constructor of valueOf(String).

Zo simpel is het soms.

PS: welke Java versie zit er in die VC? Want parseDouble zit er al sinds JDK1.2 in.

[ Voor 10% gewijzigd door Robtimus op 15-03-2004 16:44 ]

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • Jabbah
  • Registratie: Februari 2004
  • Laatst online: 26-05 20:20
Als je compiler de methode parseDouble niet kent dan gebruik je wel een hele oude versie van de JDK!! Deze methode zit er namelijk in vanaf versie 1.2. (zie ook: http://java.sun.com/j2se/...api/java/lang/Double.html ). Dus even de meest recente versie van de JDK downloaden (1.4.2) kan geen kwaad.

En dat ie niet werkt op de 'kleine' double.. Tja.. ik raad je dan toch echt aan om even wat basisprincipes over de Java programmeertaal te leren (dus bij hoofdstuk 1 in je boek beginnen). double is een primitive type en Double is een object. Behalve een aantal primitive types zoals double, int, etc.. werkt Java alleen maar met objecten.

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 17:25

voodooless

Sound is no voodoo!

TIP!! Gooi dat visual cafe weg en download eens een recente SDK (Zoals al meer mensen aangeven). VC veroorzaakt meer ellende dan dan dat het heilzaam is!

Do diamonds shine on the dark side of the moon :?


  • BasSpruit
  • Registratie: September 2002
  • Laatst online: 09-04-2022
IceManX schreef op 15 maart 2004 @ 16:42:
Als je in de API kijkt (http://java.sun.com/j2se/1.4.2/docs/api/index.html, bookmarken!!) onder java.lang, klasse Double, dan zie je dat er 3 methods zijn die een double teruggeven. longBitsToDouble is niet wat je zoekt, dus blijven de andere 2 opties over. Voor doubleValue() heb je eerst een Double object nodig, en hoe krijg je die? Idd, constructor of valueOf(String).

Zo simpel is het soms.

PS: welke Java versie zit er in die VC? Want parseDouble zit er al sinds JDK1.2 in.
ik heb geen idee welke versie er wordt gebruikt, maar ik heb wel de laatste versie gedownload en geinstalleerd, na de installatie van visual cafe...
Pagina: 1