Toon posts:

[Java] Functie divide gebruiken.

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

Verwijderd

Topicstarter
Hey luitjes,

Ben nu druk bezig met een progje voor school.
Nu ben ik iemand anders z'n source aan het optimaliseren,
maar hoe kan ik de functie divide en mod gebruiken in java ?

import java.lang.*; //en de rest
int test=0;
int test2=0;
int test3=0;
int test4=0;
test = divide(100, 5);
test2 = Math.divide(100, 5);
test3 = mod(100, 3.2);
test4 = Math.mod(100, 9);

heb ik tot nu toe geprobeerd maar werkt niet, ik kan nergens een goed voorbeeld vinden.

Hoop dat jullie me kunnen helpen.

edit: comma's vergeten. en vraag uitgebreid.

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

een functie roep je in het algemeen aan met een comma "," tussen je waarden.
Overigens kan ik de fucntie devide niet vinden in de Math class...

Verwijderd

Topicstarter
hmm, hetzelfde verhaal voor mod, weet dat die wel bestaat.

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

doet eens
test = divide(1,100); dan..

Verwijderd

Topicstarter
Source :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.io.*;
import java.util.*;
import java.lang.*;
import java.text.*;

class test {
  public static void main(String args[]) {
    int test=0;
    int test2=0;
    int test3=0;
    int test4=0;
    test = divide(100, 5); 
    test2 = Math.divide(100, 5); 
    test3 = mod(100, 3.2); 
    test4 = Math.mod(100, 9); 
    System.out.println(test + test2 + test3 + test4);
  }
}

Uitkomst :

test.java:12: cannot resolve symbol
symbol : method divide (int,int)
location: class test
test = divide(100, 5);
^
test.java:13: cannot resolve symbol
symbol : method divide (int,int)
location: class java.lang.Math
test2 = Math.divide(100, 5);
^
test.java:14: cannot resolve symbol
symbol : method mod (int,double)
location: class test
test3 = mod(100, 3.2);
^
test.java:15: cannot resolve symbol
symbol : method mod (int,int)
location: class java.lang.Math
test4 = Math.mod(100, 9);
^
4 errors


En ik weet wel bijna zeker dat divide en mod functies zijn binnen java.
^ staan nie top de goede plaats goute het maar om de plaats te bekijken.

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

divide is delen ook wel met de oparator /
mod is modulo ook wel met de operator %

ik heb de api doc bekeken en ze staan er niet in
mag jij me aanwijzen waar ze staan

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
1. Pak de Java API Documentation erbij.
2. Ontdek dat er geen Math.divide(...) en Math.mod(...) is
3. Zoek op hoe je dat dan wel moet doen.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
4. Je hoeft java.lang.* niet te importeren (in een echte SDK is dat zelfs niet toegestaan geloof ik)
5. Je importeert nogal veel dingen die je helemaal niet gebruikt.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
http://java.sun.com/products/jdk/1.1/docs/api/java.math.BigInteger.html

Hier haalde ik dat uit, maar mijn java kennis is pas 1 dag oud. Leek mij een schone manier om deze functies te gebruiken, gebruikte ze ooit in c++ ook, verwacht dan dat het ook kan in java.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
(Op verzoek ;) )

Het is niet nodig om eerst al je variabelen te intialiseren op 0 en daarna pas een waarde te geven, maar het is ook niet fout :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Op maandag 05 november 2001 16:45 schreef Dhole het volgende:
http://java.sun.com/products/jdk/1.1/docs/api/java.math.BigInteger.html

Hier haalde ik dat uit, maar mijn java kennis is pas 1 dag oud. Leek mij een schone manier om deze functies te gebruiken, gebruikte ze ooit in c++ ook, verwacht dan dat het ook kan in java.
A kijk,

een bigInteger is een class. een int een ingebouwd type.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
java.math is een package, BigInteger in de klasse. Dus als je het al zou willen gebruiken moet je BigInteger.divide doen. Deze operaties zijn echter speciaal voor BIGIntegers, dus het is niet zo efficient om die te gaan gebruiken ;) . Je kan beter de normale operatoren gebruiken (zie mijn url onder 'Zoek op').

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
oke het kan dus blijkbaar niet op de schone manier, das jammer.

Maar als ik die BigIntegers wel wil gebruiken :)
Hoe los ik het dan op nu we toch bezig zijn :)

Het gaat om een Euro progje dus liefst zo min mogelijk afrondings verliezen :(
Wil het programma alleen op verzoek mailen, misschien zijn er meer Gotters die op dezelfde school zitten en het dan ook meteen hebben :( en dat heb ik leiver niet.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Voor BigInteger:
code:
1
2
3
4
5
6
7
8
9
10
11
import java.math.BigInteger;

public class Vla
{
   pubic void Koe()
   {
     BigInteger value  = new BigInteger("214534654757632367764364527");
     BigInteger value2 = new BigInteger("342346");
     BigInteger value3 = value.divide(value2)
   }
}

Als je een klasse gebruikt moet je deze dus altijd importeren als hij niet in java.lang zit.

Dit werkt echter niet met decimalen, waarvoor je beter BigDecimal kan gebruiken. Die zuigt echter ook weer omdat het geen decimale berekeningen zijn. Daarvoor moet je weer de IBM implementatie hebben (even zeggen als je interesse hebt, zal ik link zoeken).

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
In iedergeval bedankt maar met BigInteger kom ik op meer code dan dat ik nu heb, en het is tenslotte maar voor school.

Verwijderd

Topicstarter
Mbravenboer je hebt mail :)

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Op maandag 05 november 2001 17:13 schreef Dhole het volgende:
In iedergeval bedankt maar met BigInteger kom ik op meer code dan dat ik nu heb, en het is tenslotte maar voor school.
En school is juist het tijdstip waar je tijd hebt om nieuwe dingen te leren & proberen..

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Het zit wel aardig in elkaar. Je kan heel duidelijk zien dat je programmeer-ervaring hebt ;) , maar niet in een OO taal :o .

Als je dit gewoon moet maken om het te laten werken is het best. Ik zag zo snel geen schokkend rare dingen. Als je dit echter moet maken als serieuze Java/OO oefening, dan zou ik je absoluut een onvoldoende geven. Werkelijk alles is static bij je! Je onderverdeling met muntsoorten ed is al heel aardig, maar het wordt pas goede Java code als je dat ook object-georienteerd aanpakt (en ik vermoed aan de opgave te zien dat dat weleens een beetje de bedoeling zou kunnen zijn ;) ).

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Klein schetsje hoe het mooi zou kunnen. Je moet nog erg veel uitbreiden, maar dit is in ieder geval OO. Geparameterizeerde typen moet je maar ff wegdenken.
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
65
public abstract class EuroBetaalEenheid
{
    private static final double GULDEN_WAARDE = 2.20371D;

    public static final Set<EuroBetaalEenheid> BETAAL_EENHEDEN;

    static
    {
    }

    private String _bijnaam;
    private double _waarde;
    
    private EuroBetaalEenheid(double waarde, String bijnaam)
    {
        super();
        _bijnaam = bijnaam;
        _waarde  = waarde;
    }

    public double getEuroWaarde()
    {
        return _waarde;
    }

    public void getDescription()
    {
        return "iets leuks met bijnaam of de waarde";
    }

    public double getGuldenWaarde()
    {
        return getEuroWaarde() * GULDEN_WAARDE;
    }
}

public class EuroMunt extends EuroBetaalEenheid
{
    public static final Set<EuroMunt> MUNTEN;

    public static final EuroMunt CENT;
    public static final EuroMunt EURO;
    // ...

    static
    {
        CENT = new EuroMunt(0.01D, null);
        EURO = new EuroMunt(1.00D, null);
        
//      MUNTEN = ....
        MUNTEN.add(CENT);
        MUNTEN.add(EURO);
        
        EuroBetaalEenheid.BETAAL_EENHEDEN.addAll(MUNTEN);
    }

    private EuroMunt(double waarde, String bijnaam)
    {
        super(waarde, bijnaam);
    }
}

public class EuroBrief extends EuroBetaalEenheid
{
}

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
Op maandag 05 november 2001 17:25 schreef wasigh het volgende:

[..]

En school is juist het tijdstip waar je tijd hebt om nieuwe dingen te leren & proberen..
Uh hier niet, geen faciliteiten en tijd om leuke dingen te maken, moet hier altijd giste ringeleverd zijn etc.



En heel erg bedankt voor je tips Mbravenboer, zal kijken wat ik ervan kan maken, is hetniet deze opdracht dan well voor een andere :)

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

je kan natuurlijk ook zelf een class schirjven die berekeningen voor je doet met divide etc. maar of je dat wilt ?
Pagina: 1