[Java] testen of een variable een integer is

Pagina: 1
Acties:

  • Elvis
  • Registratie: Juli 2002
  • Laatst online: 18-11-2017

Elvis

Echo Lima Victor India Sierra

Topicstarter
Hallo :w,

Veelgestelde vraag wss, maar ik vond het antwoord na een hele tijd zoeken nog niet terug. ;(
Ik heb een grafische calculator die 2 door de gebruiker ingegeven integers optelt.
Nu moet ik testen of de ingegeven integers wel daadwerkelijk integers zijn.
De getallen haal ik zo op:
Java:
1
2
getallenVeldEen.getText();
getallenVeldTwee.getText();

Maar hoe test ik nu dat de String die ik daar ophaal een integer is en geen ampersand oid?
Ik weet dat het iets kleins en stoms is, maar kvind het niet terug.
Kheb mn cursus Java en het www al ettelijke uren doorpluisd, zonder resultaat. Help?

[GoT] TF2 Clan


  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

Les 1 aan java: Leer docs lezen.
Les 2 aan java: leer [google=java Integer.parseInt]googlen[/url]

[ Voor 94% gewijzigd door SchizoDuckie op 06-06-2008 17:25 ]

Stop uploading passwords to Github!


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:13

Creepy

Tactical Espionage Splatterer

Je kan eens kijken naar zaken als new Integer(String) en Integer.parseInt(String).

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Twazerty
  • Registratie: April 2006
  • Laatst online: 22:32

Twazerty

AVCHDCoder developer

met mijn beperkte java kennis zou ik zeggen: De string omzetten naar een int en omsluiten met een try catch.

Ruisende versterker: schakel je subwoofer in.


  • tweakerbee
  • Registratie: Maart 2000
  • Laatst online: 09-11 16:06

tweakerbee

dus..?

Zelfs met zoeken op Java en Integer zou je dit moeten hebben gevonden.
1e hit: http://java.sun.com/j2se/1.3/docs/api/java/lang/Integer.html
2e regel: In addition, this class provides several methods for converting an int to a String and a String to an int, as well as other constants and methods useful when dealing with an int.

Integer.parseInt zegt:
Returns:
the integer represented by the argument in decimal.
Throws:
NumberFormatException - if the string does not contain a parsable integer.
Als dit 'ettelijke uren' kost, dan ben ik bang dat leren programmeren je nog _heel_ veel tijd gaat kosten.

Om je de volgende uren programmeerwerk te besparen nog maar een hapklare(r) brok:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
String stringEen = getallenVeldEen.getText();
String stringTwee = getallenVeldTwee.getText();
int intEen;
int intTwee;
try {
intEen = Integer.parseInt(stringEen);
}
catch (NumberFormatException e) {
e.printStackTrace();
System.out.println("Geen int in 1!");
}
try {
intTwee = Integer.parseInt(stringTwee);
}
catch (NumberFormatException e) {
e.printStackTrace();
System.out.println("Geen int in 2!");
}

if(intEen!=null && intTwee!=null) {
// doe je ding
}


edit:

Tsja, Elvis, die heeft natuurlijk wel even de tijd :+

[ Voor 32% gewijzigd door tweakerbee op 06-06-2008 17:33 ]

You can't have everything. Where would you put it?


  • Elvis
  • Registratie: Juli 2002
  • Laatst online: 18-11-2017

Elvis

Echo Lima Victor India Sierra

Topicstarter
Die Integer.parseInt had ik al gevonden en die werkte mooi zolang de ingegeven waarden daadwerkelijk konden omgezet worden tot een Integer. Zoniet komt die idd altijd met die NumberFormatException.
Ik dacht gewoon dat er een gemakkelijkere manier was om die dingen te testen.
Hoe die try/catch in de haak zit weet ik wel...

Bedankt voor de hulp.
Volgende keer denk ik wel 2 keer na voor ik op een vrijdagavond post... }:|

[GoT] TF2 Clan


  • LAN
  • Registratie: Oktober 2000
  • Niet online

LAN

Je kunt ook naar regular expressions kijken, bijv:

Java:
1
2
3
4
String getal = "123";
if(getal.matches("\\d+")) {
  System.out.println("het is een getal");
}

  • Elvis
  • Registratie: Juli 2002
  • Laatst online: 18-11-2017

Elvis

Echo Lima Victor India Sierra

Topicstarter
LAN schreef op vrijdag 06 juni 2008 @ 17:56:
Je kunt ook naar regular expressions kijken, bijv:

Java:
1
2
3
4
String getal = "123";
if(getal.matches("\\d+")) {
  System.out.println("het is een getal");
}
Kijk, dat bedoelde ik dus! :)
Ik maakte natuurlijk de fout door in de API op Integer te zoeken ipv String. (dom 8)7)
Dankje!

[GoT] TF2 Clan


  • The Fox NL
  • Registratie: Oktober 2004
  • Laatst online: 17-11 13:15
Elvis schreef op vrijdag 06 juni 2008 @ 18:14:
[...]

Kijk, dat bedoelde ik dus! :)
Ik maakte natuurlijk de fout door in de API op Integer te zoeken ipv String. (dom 8)7)
Dankje!
Nu weet je natuurlijk nog niet of het getal wel binnen het bereik van een integer (of long of wat dan ook) ligt. Nu weet ik natuurlijk niet wat precies de bedoeling is, dus misschien is het niet van belang.

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 18-11 00:56
En negatieve getallen dan? En wat als het getal niet in een integer past? zei The Fox NL ook al :P

Volgens mij is het daadwerkelijk testen van de conditie duurder als die exceptie. Excepties throwen zou ik vermijden als het enigszins zou kunnen, maar deze test komt gewoon neer op het parsen van een string en je doet het twee keer als het parsen lukt. Het is veel makkelijker om gewoon het getal proberen te parsen naar een int, omdat je dan geen dubbel werk doet.

[ Voor 3% gewijzigd door Jaap-Jan op 06-06-2008 22:37 ]

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


Verwijderd

Elvis schreef op vrijdag 06 juni 2008 @ 18:14:
[...]

Kijk, dat bedoelde ik dus! :)
Ik maakte natuurlijk de fout door in de API op Integer te zoeken ipv String. (dom 8)7)
Dankje!
Het doel van de opgegeven getallen is uiteindelijk het uitvoeren van een berekening met die twee getallen, ja toch ? (het doel van een rekenmachine lijkt me).

Waarom ga je dan eerst CPU tijd verspillen aan het matchen op een INT, om daarna te casten naar INT voor verdere bewerking?

Ja kan beter gewoon voor try-catch gaan lijkt me, in de gevallen dat het goed gaat (verreweg de meeste) doe je dan geen dubbel werk.

  • tweakerbee
  • Registratie: Maart 2000
  • Laatst online: 09-11 16:06

tweakerbee

dus..?

Elvis schreef op vrijdag 06 juni 2008 @ 17:41:
Die Integer.parseInt had ik al gevonden...
Kijk, dat stond niet in de startpost. Als je dat erbij gezegd had was mijn reactie misschien iets anders geweest.

Je bent waarschijnlijk net met Java begonnen, en hebt wel een beetje ervaring met andere talen. Ik zou je aan willen raden te proberen om dingen "op de Java manier" te leren voordat je je gaat drukmaken over kleine optimalisaties. Java gebruikt veel checked en unchecked exceptions voor programmaflow.

Mijn advies: Niet rommelen met een regular expression als je niets met een String wil doen. Gewoon casten naar een int en de exception afvangen.

You can't have everything. Where would you put it?

Pagina: 1