[JAVA]Probleem met int.

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • XyritZz
  • Registratie: Augustus 2003
  • Laatst online: 04-06 13:41
Ik doe een studie Informatica, en als toets voor Object Oriented Software Engineering hebben we een project gekregen wat we kunnen bestuderen (het word in de toets echt gebruikt)

Het is een soort van SMS simulator, je maakt een provider aan, een paar telefoontjes met telefoonnummers, en je kunt sms berichten heen en weer zenden.

Het viel me op dat de Telefoonnummers opgeslagen zijn als String, en niet als integer. Een nummer als 06xxxxxxxx is groter dan het maximum van Integer, dat weet ik, maar in de les als introductie gebruikte mijn leraar getallen met niet meer dan 4 cijfers. Dus dat is het niet denk ik.

Wat ik denk is dat een Int niet goed kan omgaan met een 0 aan het begin van een nummer. Ik heb daarom om dit te testen even deze methode gemaakt:

code:
1
2
3
4
5
 public void TestNul()
    {
        a = 06421;
        System.out.println(" " +a);
    }


Als uitvoer kwam er 3345. Hier snap ik dus helemaal niks van, het lijkt geeneens op wat ik aan var. a heb meegegeven. Als ik bijv. 421 invoer, komt wel het goede getal eruit, het probleem lijkt dan ook niet bij mijn methode te liggen.

Ik hoop dat iemand van jullie snapt hoe dit werkt, en mij uit kan leggen waarom de uitvoer totaal niet lijkt op de invoer bij 06421 als int. Alvast bedankt :)

I think there is a world market for maybe five computers. - Thomas Watson (1874-1956), Directeur van IBM (1943)


Acties:
  • 0 Henk 'm!

  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

God, root, what is difference? | Talga Vassternich | IBM zuigt


Acties:
  • 0 Henk 'm!

  • Nvidiot
  • Registratie: Mei 2003
  • Laatst online: 03-06 16:38

Nvidiot

notepad!

06421 in base-8 is 3345 decimaal :)

What a caterpillar calls the end, the rest of the world calls a butterfly. (Lao-Tze)


Acties:
  • 0 Henk 'm!

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 15-05 16:29

Macros

I'm watching...

Een telefoonnummer is geen getal, daarom zit het in een String.

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


Acties:
  • 0 Henk 'm!

  • DRAFTER86
  • Registratie: April 2002
  • Laatst online: 17:37
Het is onzin een telefoonnummer als Int op te slaan, je gaat er toch niet mee rekenen. Of wou je soms het gemiddelde van alle cijfers ofzo? ;)

Acties:
  • 0 Henk 'm!

Anoniem: 98133

Als je een getal opgeeft dat met een nul begint, wordt dat gezien als een octaal getal, en niet als een decimaal. Haal je de eerste nul weg, dan zal het goed gaan.

Zie ook http://java.sun.com/j2se/...#decode(java.lang.String)

Acties:
  • 0 Henk 'm!

  • XyritZz
  • Registratie: Augustus 2003
  • Laatst online: 04-06 13:41
Nvidiot schreef op zondag 23 januari 2005 @ 16:01:
06421 in base-8 is 3345 decimaal :)
Bedankt, dit is al weer een stap de goede richting in, ik ben zelf ook nog wat aan het testen geweest, om tot een oplossing te komen dat het getal wel juist eruit komt.

een Double werkt ook niet :S

nvidiot, weet je misschien waar het probleem vandaan komt, waarom/waar het fout gaat. Ik snap nu dat het een fout is met getalsoorten, maar ik snap het waarom er niet van :S

//edit: Ondertussen 2 reacties gemist, ik snap het probleem nu, bedankt voor het reageren allemaal :)

[ Voor 10% gewijzigd door XyritZz op 23-01-2005 16:18 ]

I think there is a world market for maybe five computers. - Thomas Watson (1874-1956), Directeur van IBM (1943)


Acties:
  • 0 Henk 'm!

  • Kwistnix
  • Registratie: Juni 2001
  • Nu online
Hogeschool Zeeland toevallig? :)

Acties:
  • 0 Henk 'm!

  • XyritZz
  • Registratie: Augustus 2003
  • Laatst online: 04-06 13:41
yup, jij ook succes morgen ;)

I think there is a world market for maybe five computers. - Thomas Watson (1874-1956), Directeur van IBM (1943)


Acties:
  • 0 Henk 'm!

  • Kwistnix
  • Registratie: Juni 2001
  • Nu online
XyritZz schreef op zondag 23 januari 2005 @ 17:41:
[...]


yup, jij ook succes morgen ;)
Thanx :*)

Acties:
  • 0 Henk 'm!

  • mrFoce
  • Registratie: Augustus 2004
  • Laatst online: 05-06 17:59
XyritZz schreef op zondag 23 januari 2005 @ 16:16:
[...]


Bedankt, dit is al weer een stap de goede richting in, ik ben zelf ook nog wat aan het testen geweest, om tot een oplossing te komen dat het getal wel juist eruit komt.

een Double werkt ook niet :S

nvidiot, weet je misschien waar het probleem vandaan komt, waarom/waar het fout gaat. Ik snap nu dat het een fout is met getalsoorten, maar ik snap het waarom er niet van :S

//edit: Ondertussen 2 reacties gemist, ik snap het probleem nu, bedankt voor het reageren allemaal :)
double werkt niet omdat een double 12.34 is bv.. Als je niet de .00 of .0 erbij zet gaat java 'klagen' dat het getal geen double is.. String ervan maken is de oplossing inderdaad

Acties:
  • 0 Henk 'm!

  • RefleXion
  • Registratie: Februari 2004
  • Laatst online: 11-06 15:21
Je vergeet ook aan te geven dat a een int is? Of staat dat hier nog boven?

code:
1
2
3
4
5
 public void TestNul()
    {
        int a = 06421;
        System.out.println(" " +a);
    }


Maar het slaat nergens op om een telefoonnummer in een integer op te slaan.

Acties:
  • 0 Henk 'm!

  • Jrz
  • Registratie: Mei 2000
  • Laatst online: 16:13

Jrz

––––––––––––

Met die 0 geef je aan dat je octaal bezig bent.. net als 0x voor hexadecimaal.
1 = 01 = 0x1
2 = 02 = 0x2
3 = 03 = 0x3
4 = 04 = 0x4
5 = 05 = 0x5
6 = 06 = 0x6
7 = 07 = 0x7
8 = 010 = 0x8
9 = 011 = 0x9
...
20 = 024 = 0x14
etc etc

Maar een telnr is een serie van cijfers, en geen getal. Denk aan nummers die beginnen met 2 nullen of een plusje

[ Voor 45% gewijzigd door Jrz op 24-01-2005 00:27 ]

Ennnnnnnnnn laat losssssssss.... https://github.com/jrz/container-shell (instant container met chroot op current directory)


Acties:
  • 0 Henk 'm!

  • mrFoce
  • Registratie: Augustus 2004
  • Laatst online: 05-06 17:59
RefleXion schreef op maandag 24 januari 2005 @ 00:12:
Je vergeet ook aan te geven dat a een int is? Of staat dat hier nog boven?

code:
1
2
3
4
5
 public void TestNul()
    {
        int a = 06421;
        System.out.println(" " +a);
    }


Maar het slaat nergens op om een telefoonnummer in een integer op te slaan.
lol volgens mij ben jij niet zo thuis in java iig..

int a = 06421 <- zie je int a staan :)

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 27-05 16:00

curry684

left part of the evil twins

Je mag een telefoonnummer per definitie niet als een integer opslaan omdat de leading zero nationaal relevant is, en je internationaal soms zelfs 2 leading zeroes nodig hebt. Deze zijn echter niet portable en worden dus met een plusje weergegeven, waardoor +31(6)12345678 een geldig telefoonnummer is. Veel plezier met dat in een integer te stoppen :)

Essentie is dat een integer bedoeld is voor velden die een waarde cq. hoeveelheid representeren. Een telefoonnummer is enkel een sequentie van cijfers die samen een unieke code vormen, dat maakt het nog geen 'waarde'. Ergo de correcte representatie is wel degelijk een string.
gideon82 schreef op maandag 24 januari 2005 @ 00:26:
[...]

lol volgens mij ben jij niet zo thuis in java iig..

int a = 06421 <- zie je int a staan :)
In de topicstart staat dat dus niet, tis net door degene die jij 'niet zo thuis' noemt toegevoegd. Lees de draad voor je blaat en zo ;)

[ Voor 23% gewijzigd door curry684 op 24-01-2005 00:36 ]

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • RefleXion
  • Registratie: Februari 2004
  • Laatst online: 11-06 15:21
gideon82 schreef op maandag 24 januari 2005 @ 00:26:
[...]


lol volgens mij ben jij niet zo thuis in java iig..

int a = 06421 <- zie je int a staan :)
Die heb ik er zelf neergezet? En ik ben inderdaad niet zo thuis in java.
Alleen voor mijn studie. Zelf programmeer ik vooral in pascal (Delphi).

Acties:
  • 0 Henk 'm!

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 06-06 08:54
Sowieso is het concept van "telefoonnummer" wat wazig; elke telefoon heeft een nummer maar dat is niet hetzelfde als wat je kiest. De telefoon met nummer 10 222 3333 kun je bijvoorbeeld bereiken door 010 222 3333 te kiezen, of 222 3333 als jouw eigen nummer toevallig ook met 10 begint.
* MSalters heeft die dingen geprogrammeerd voor het echie

[ Voor 5% gewijzigd door MSalters op 24-01-2005 10:48 . Reden: /me werkt niet zo lekker in tags ]

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Acties:
  • 0 Henk 'm!

  • sirono
  • Registratie: November 2002
  • Laatst online: 13-08-2024
kan ik dan ook mobiele nummers kiezen zonder 06 ervoor als ik bel met mijn mobiel?

* sirono was gewoon ff beniewd :D

Acties:
  • 0 Henk 'm!

  • Jrz
  • Registratie: Mei 2000
  • Laatst online: 16:13

Jrz

––––––––––––

sirono schreef op maandag 24 januari 2005 @ 11:01:
kan ik dan ook mobiele nummers kiezen zonder 06 ervoor als ik bel met mijn mobiel?

* sirono was gewoon ff beniewd :D
Jeps, bij mij in elk geval wel..

Ennnnnnnnnn laat losssssssss.... https://github.com/jrz/container-shell (instant container met chroot op current directory)


Acties:
  • 0 Henk 'm!

  • XyritZz
  • Registratie: Augustus 2003
  • Laatst online: 04-06 13:41
RefleXion schreef op maandag 24 januari 2005 @ 00:12:
Je vergeet ook aan te geven dat a een int is? Of staat dat hier nog boven?

code:
1
2
3
4
5
 public void TestNul()
    {
        int a = 06421;
        System.out.println(" " +a);
    }


Maar het slaat nergens op om een telefoonnummer in een integer op te slaan.
Dat stond nog daarboven. Maar ik snap het probleem nu, ik vond het zelf ook al gek om een telefoonnummer in een integer op te slaan, maarja ik wist van tevoren al dat het een vraag op mijn tentamen zou gaan worden.

Want als je aan een leraar vraagt: "Waarom staat het telefoonnummer in een String, en niet als een int?" en je krijgt als reactie: "dat is een zeer goede vraag" met een lach erbij... dan weet ik genoeg.

Via dit topic heb ik er weer een stel argumenten bij om mezelf op het tentamen mee te verdedigen :D Bedankt allemaal :D

I think there is a world market for maybe five computers. - Thomas Watson (1874-1956), Directeur van IBM (1943)

Pagina: 1