[JAVA]Float in een applet?

Pagina: 1
Acties:
  • 55 views sinds 30-01-2008

  • PromWarMachine
  • Registratie: Oktober 2001
  • Laatst online: 10-08 11:19

PromWarMachine

Forsaken Archer

Topicstarter
'k Ben bezig met een JAVA basiscursus, omdat ik er wat meer van wil leren. Leuk dat je zowel 'gewone' applicaties kan maken als applets. :)

Mijn boek behandelt wel hoe je moet rekenen met bijvoorbeeld floats of ints in een applicatie, maar niet in een applet. Het enige 'rekenkundige' dat ze met een applet doen is een textbox waar je je voornaam in typt, een textbox waar je je achternaam in typt en een knop die er voor zorgt dat hij je voor- en achternaam samenvoegd in een string. (Optelt dus)

Nu probeerde ik er voor te zorgen, door middel van deze code:

Java:
1
2
3
4
5
6
public void actionPerformed(ActionEvent evt)
    {
        float g1 = getal1.getText();
        float g2 = getal2.getText();
        resultaat.setText(g1 + g2);
    }


dat hier het resultaat in resultaat (een textbox) neergezet wordt. Dit werkt helaas niet. Het type is onbekend. In mijn boek staat ongeveer hetzelfde als dit, behalve dat er dan strings in plaats van floats gebruikt worden en namen in plaats van getallen.

Dit is de foutmelding:
E:\Documents and Settings\Aris\My Documents\School\JAVA\AppVollNm.java:33: incompatible types
found : java.lang.String
required: float
float g1 = getal1.getText();
Dat wil zeggen dat hij een andere library nodig heeft voor float, right?
getal1, getal2 & resultaat zijn eerder aangemaakte textfields.

Hier heb ik gevonden dat dit eigenlijk alle libraries zijn die gebruikt worden door een applet, maar zelfs met al die libraries werkt het niet. Waar gaat het fout?

Dividend for Starters


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Java is heel strict met datatypes. Dus je moet aangeven dat je bewust bent dat je een String in een float wil stoppen en zo mogelijk data verliest.

Volgens mij moet het zo:
float float1 = Float.parseFloat(getal1.getText());

Ik ga het ff checken...

edit:
Ja! In 1 keer goed.
Java Manual
static float parseFloat(String s)
Returns a new float initialized to the value represented by the specified String, as performed by the valueOf method of class Float.
Trouwens, hetzelfde trucje kan ook met Integer, Double etc.

[ Voor 39% gewijzigd door Voutloos op 18-09-2003 23:18 ]

{signature}


  • PromWarMachine
  • Registratie: Oktober 2001
  • Laatst online: 10-08 11:19

PromWarMachine

Forsaken Archer

Topicstarter
Voutloos schreef op 18 September 2003 @ 23:15:
Java is heel strict met datatypes. Dus je moet aangeven dat je bewust bent dat je een String in een float wil stoppen en zo mogelijk data verliest.

Volgens mij moet het zo:
float float1 = Float.parseFloat(getal1.getText());

Ik ga het ff checken...
Wat een complexe syntax zeg :/

Dies niet handig, maar hij werkt wel! Nu zeurt hij alleen nog over deze, die zal dan ook wel incorrect zijn, qua syntax?

Java:
1
resultaat.setText(float1 + float2);

Dividend for Starters


  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 10:29
Float float1 = Float.valueOf(getal1.getText());
float float2 = F.floatValue();

float is niet hetzelfde als Float. Dus hij moet 2 keer worden omgezet.

[ Voor 36% gewijzigd door Eskimootje op 18-09-2003 23:20 ]


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Wat voor type is resultaat?
Ik heb het idee dat je een PHP'er bent...

PS.
Eskimootje doet precies hetzelfde. valueOf en ParseGewenste type is dubbel op. Alleen is valueOf wel makkelijker te onthouden.

[ Voor 51% gewijzigd door Voutloos op 18-09-2003 23:22 ]

{signature}


  • PromWarMachine
  • Registratie: Oktober 2001
  • Laatst online: 10-08 11:19

PromWarMachine

Forsaken Archer

Topicstarter
Voutloos schreef op 18 September 2003 @ 23:19:
Wat voor type is resultaat?
Ik heb het idee dat je een PHP'er bent...
Hoe zie je dat? :o

't Klopt... heb eerst C++ gedaan en ben nu bezig met PHP & SQL. School verplicht mij echter ook bezig te zijn met JAVA, vandaar dat ik vast aan 't verkennen ben, terwijl de rest de basics leert. Nou is dit ook redelijk basic, maar je moet ergens beginnen he :P

resultaat type:
Java:
1
2
TextField getal2 = new TextField(10);
TextField resultaat = new TextField(10);
Float float1 = Float.valueOf(getal1.getText());
float float2 = F.floatValue();

float is niet hetzelfde als Float. Dus hij moet 2 keer worden omgezet.
Nee, dat hoofdlettergebruik daar ben ik inmiddels pijnlijk achter gekomen. Dat is echt wennen als je talken gewend bent die niet case senstive zijn! Alleen snap ik deze syntax niet echt.

Die eerste is een variant op de versie die Voutloos net gaf, die snap ik nog wel. Maar die tweede? :? 'k Zal wel even googlen naar floatValue, dat zal wel ophelderen. :)

[ Voor 35% gewijzigd door PromWarMachine op 18-09-2003 23:25 ]

Dividend for Starters


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Waarom niet:
float resultaat = getal1 + getal2;

En PHP is een taal die nogal wat slordigheidjes 'vergeeft'. Vaak zal het geen probleem op leveren, maar imo is Java veiliger gedefinieerd. Maar smaken verschillen en deze discussie doet er nu niet toe. Ik zag dat je PHP doet omdat je types negeert.

En Eskimootje je hebt gelijk. Float is puur een WrapperClass. (voor TS: Een class die zorgt dat een primitief type zich gedraagt als een Object. Lees dat maar eens na :Y) )

[ Voor 25% gewijzigd door Voutloos op 18-09-2003 23:28 ]

{signature}


  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 10:29
PromWarMachine schreef op 18 september 2003 @ 23:21:

Die eerste is een variant op de versie die Voutloos net gaf, die snap ik nog wel. Maar die tweede? :? 'k Zal wel even googlen naar floatValue, dat zal wel ophelderen. :)
Mijn fout moest Float1.floatValue(); zijn

  • Marcj
  • Registratie: November 2000
  • Laatst online: 21-08 21:30
Misschien dom hoor, maar dit zou toch ook gewoon moeten werken? (Ik gebruik deze manier iig regelmatig voor int en double's...

Java:
1
2
3
4
5
6
public void actionPerformed(ActionEvent evt) 
    { 
        float g1 = getal1.getText(); 
        float g2 = getal2.getText(); 
        resultaat.setText("" + g1 + g2); 
    }

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Eskimootje schreef op 18 September 2003 @ 23:18:
Float float1 = Float.valueOf(getal1.getText());
float float2 = F.floatValue();

float is niet hetzelfde als Float. Dus hij moet 2 keer worden omgezet.
Hee, net getest. Niet nodig. De methode Float.parseFloat geeft in 1 keer een float terug. Dus die is makkelijker/overzichtelijker.

{signature}


  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 10:29
Marcj schreef op 18 september 2003 @ 23:31:
Misschien dom hoor, maar dit zou toch ook gewoon moeten werken? (Ik gebruik deze manier iig regelmatig voor int en double's...

Java:
1
2
3
4
5
6
public void actionPerformed(ActionEvent evt) 
    { 
        float g1 = getal1.getText(); 
        float g2 = getal2.getText(); 
        resultaat.setText("" + g1 + g2); 
    }
Je knalt nu toch 2 keer een String in een float. Dat mag nog steeds niet.
Voutloos schreef op 18 September 2003 @ 23:32:
[...]

Hee, net getest. Niet nodig. De methode Float.parseFloat geeft in 1 keer een float terug. Dus die is makkelijker/overzichtelijker.
Imho niet hoor maar misschien mag je van Java Float en float zonder dat extra aan te geven om zetten.
Marcj schreef op 18 september 2003 @ 23:34:
[...]

Heb je het al eens geprobeerd?? Ik doe het al tijden zo, maar dan voornamelijk met integers. Nooit geprobeerd met floats trouwens...
Heb jij de topicstart al doorgelezen en dan vooral de foutmelding bekeken?

[ Voor 45% gewijzigd door Eskimootje op 18-09-2003 23:35 ]


  • Marcj
  • Registratie: November 2000
  • Laatst online: 21-08 21:30
Eskimootje schreef op 18 september 2003 @ 23:32:
[...]


Je knalt nu toch 2 keer een String in een float. Dat mag nog steeds niet.
Heb je het al eens geprobeerd?? Ik doe het al tijden zo, maar dan voornamelijk met integers. Nooit geprobeerd met floats trouwens...

[edit]
Oké, ik zie nu dat ik de boel een beetje verkeerd aan het begrijpen ben, sorry ;)

dit zou echt moeten met Float.parseFloat(String) ja...

[ Voor 19% gewijzigd door Marcj op 18-09-2003 23:39 ]


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Imho niet hoor maar misschien mag je van Java Float en float zonder dat extra aan te geven om zetten.
Zie 1e post die ik al had aangepast:
Java Manual
static float parseFloat(String s)
Returns a new float initialized to the value represented by the specified String, as performed by the valueOf method of class Float.

{signature}


  • PromWarMachine
  • Registratie: Oktober 2001
  • Laatst online: 10-08 11:19

PromWarMachine

Forsaken Archer

Topicstarter
Marcj schreef op 18 September 2003 @ 23:34:
[...]

Heb je het al eens geprobeerd?? Ik doe het al tijden zo, maar dan voornamelijk met integers. Nooit geprobeerd met floats trouwens...
Geeft dezelfde foutmelding als eerder gepost...

Java:
1
2
3
4
5
6
public void actionPerformed(ActionEvent evt)
    {
        float float1 = Float.parseFloat(getal1.getText());
        float float2 = Float.parseFloat(getal2.getText());
        float resultaat = float1 + float2;
    }


Zo werkt 'ie!

Nu moet ik alleen nog die variabele resultaat in die TextField neerzetten. En result.setText(resultaat); werkt hier niet. 'k Ga nu op zoek naar de syntax van TextField.

result is hier trouwens de nieuwe naam van de TextField, omdat de variabelenaam resultaat nu gebruikt wordt door die float hierboven :)

n.a.v. jullie discussie begrijp ik dus dat een waarde uit een textfield altijd een string is. Klinkt me niet echt logisch in de oren als ik dat vergelijk met andere talen, maar goed, zal gewenning zijn. :)
float/integer/double +"" wordt een String dus...
*Got it* Thanks! :)

@Eskimootje: Inderdaad, wat die beveiliging betreft doet me dat wel weer herinneren aan Pascal, waar je werkelijk niets fout mocht doen, dat is hier eigenlijk ook zo. Terwijl de C++ en PHP interpreters relatief erg makkelijk zijn.

edit:

Wow, jullie geven hier 3 manieren (!) aan om 1 ding weg te schrijven. :o
Vele wegen die naar Rome leiden! :Y)

[ Voor 34% gewijzigd door PromWarMachine op 18-09-2003 23:46 ]

Dividend for Starters


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Marcj schreef op 18 September 2003 @ 23:34:
[...]

Heb je het al eens geprobeerd?? Ik doe het al tijden zo, maar dan voornamelijk met integers. Nooit geprobeerd met floats trouwens...
Nop. Jullie praten langs elkaar heen. Eskimo zegt terecht dat je niet zomaar een String in een float kan stoppen.

Wat jij wil zeggen is dat je van iets een String kan maken als je er + "" bij concatoneert(spelling...). En dat is om een String te maken idd de makkelijste manier.
Nu moet ik alleen nog die variabele resultaat in die TextField neerzetten. En result.setText(resultaat); werkt hier niet. 'k Ga nu op zoek naar de syntax van TextField.
float/integer/double +"" wordt een String dus...

Java:
1
2
3
4
5
6
public void actionPerformed(ActionEvent evt)
    {
        float float1 = Float.parseFloat(getal1.getText());
        float float2 = Float.parseFloat(getal2.getText());
        result = "" + (float1 + float2); //Korter
    }

[ Voor 36% gewijzigd door Voutloos op 18-09-2003 23:44 ]

{signature}


  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 10:29
Float.toString(resultaat)


En het is wel logisch dat een text veld altijd een String is aangezien je niet weet wat de user invoerd. Dit is dus extra veiligheid waardoor je beter oplet en je minder risico krijgt op foute resultaten.

[ Voor 81% gewijzigd door Eskimootje op 18-09-2003 23:45 ]


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
*Got it* Thanks! :)
Graag gedaan. (en ook eer naar Eskimo uiteraard).


Alhoewel ik het antwoord een beetje heb voorgezegd. Dus om er echt goed wat van te leren het volgend huiswerk: Lees over Wrapper Classes, primitieve types, Objecten en het casten ertussen. :+

{signature}


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Ik denk dat we nu wel voldoende hebben laten zien hoe je een static method kan aanroepen en hoe de casting Float <-> String gaat :)
De topicstarter zou ik graag naar http://java.sun.com/api/index.html willen sturen voor veel meer informatie over alle beschikbare classes en/of java tutorials :)

Succes ermee :)
Pagina: 1

Dit topic is gesloten.