abonnement Unibet Coolblue Bitvavo
pi_33840548
Hij was er niet, hij is er nu wel. Het Java voor Dummies topic. Stel hier al je vragen over Java. Heb je interessante links, laat ze dan ook achter.
pi_33840553
Om maar meteen te beginnen, een vraag van mijn kant. Ik heb een array met daarin 256 getallen. Nu wil in die array de positie van het getal vinden dat het dichtste bij bijvoorbeeld het getal 12 zit.

Voorbeeld:
1
2
1  2  3  4  5  6 
2  5  9  12 14 18

Nu heb ik bijvoorbeeld als invoer het getal 8. 8 zit het dichtste bij 5 en 9. Maar het dichtste bij 9. 9 zit op positie 3, dus de uitkomst is 3.

Hoe kan ik dit nu in Java programmeren?
pi_33845733
Je moet ieder getal in de array aflopen en dat vergelijken met het getal dat je invoert.
Dus bv:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
int invoer = 8;
int index = -1;
int verschil = array[0] - invoer;
if(verschil < 0) -verschil;

for(int i = 1; i < array.length; i++){
     int x = array[i] - invoer;
     if(x < 0) -x;

     if(x <= verschil){
          verschil = x;
          index = i;
     }
}


Zo dus, denk ik. Niet getest, maar lijkt me te kloppen. Anders moet je de fouten er maar ff uithalen.
Een dag niet gelachen is een dag niet geleefd.
pi_33886825
quote:
Op zondag 8 januari 2006 19:25 schreef HuHu het volgende:
Om maar meteen te beginnen, een vraag van mijn kant. Ik heb een array met daarin 256 getallen. Nu wil in die array de positie van het getal vinden dat het dichtste bij bijvoorbeeld het getal 12 zit.

Voorbeeld:
[ code verwijderd ]

Nu heb ik bijvoorbeeld als invoer het getal 8. 8 zit het dichtste bij 5 en 9. Maar het dichtste bij 9. 9 zit op positie 3, dus de uitkomst is 3.

Hoe kan ik dit nu in Java programmeren?
Als je dit goed wilt programmeren maakt het uit of je array gesorteerd is of niet.
Zo ja, dan zou ik een andere methode gebruiken, anders die van Nietmachine.

NB het if-statement is te vervangen door int verschil = Math.abs(array[0] - invoer);
pi_33895077
Als de array idd gesorteerd is moet je anders zoeken. Pak de helft van de lengte van de array. Kijk of het getal groter of kleiner is dan je op te zoeken getal. Stel hij is klein, dan bekijk je het getal dat op een kwart ligt enzovoorts... tot je bij het getal bent dat het dichtste in de buurt is van je zoekwaarde.

Voordeel is dat je niet je totale array hoeft door te zoeken en dus werkt het sneller

-verkapte tvp-
pi_33903030
We hebben nu bij informatica een administratieprogramma moeten maken,
is het eigenlijk mogelijk om via jcreator of een ander programma dat project om te zetten in een "executable file" (.exe)?
pi_33904064
quote:
Op dinsdag 10 januari 2006 14:33 schreef Chimay het volgende:
We hebben nu bij informatica een administratieprogramma moeten maken,
is het eigenlijk mogelijk om via jcreator of een ander programma dat project om te zetten in een "executable file" (.exe)?
Omzetten naar een *.exe is zeer lastig in Java. Wat wel kan is er een uitvoerbaar *.jar bestand van te maken. Wel is dan vereist dat de computer waarop het programma draait Java geinstalleerd heeft.
pi_33905542
quote:
Op dinsdag 10 januari 2006 15:03 schreef HuHu het volgende:

[..]

Omzetten naar een *.exe is zeer lastig in Java. Wat wel kan is er een uitvoerbaar *.jar bestand van te maken. Wel is dan vereist dat de computer waarop het programma draait Java geinstalleerd heeft.
Jammer, ik kan me nog wel herinneren dat bij Turbo Pascal dit wel kon.
Heeft het ook niet te maken met het feit dat Java een object georiënteerde programmeertaal is en met classes enzo werkt?
  dinsdag 10 januari 2006 @ 16:03:32 #9
25527 FallenAngel666
Think of the kittens!
pi_33906141
quote:
Op zondag 8 januari 2006 19:25 schreef HuHu het volgende:
Om maar meteen te beginnen, een vraag van mijn kant. Ik heb een array met daarin 256 getallen. Nu wil in die array de positie van het getal vinden dat het dichtste bij bijvoorbeeld het getal 12 zit.

Voorbeeld:
[ code verwijderd ]

Nu heb ik bijvoorbeeld als invoer het getal 8. 8 zit het dichtste bij 5 en 9. Maar het dichtste bij 9. 9 zit op positie 3, dus de uitkomst is 3.

Hoe kan ik dit nu in Java programmeren?
Even een zijdelings opmerking, let er wel op dat een array index niet bij 1 begint, zoals je dat hier schets, maar bij 0
Signature:
Maximaal
4
regels
  dinsdag 10 januari 2006 @ 16:16:34 #10
25527 FallenAngel666
Think of the kittens!
pi_33906576
quote:
Op dinsdag 10 januari 2006 15:47 schreef Chimay het volgende:

[..]

Jammer, ik kan me nog wel herinneren dat bij Turbo Pascal dit wel kon.
Heeft het ook niet te maken met het feit dat Java een object georiënteerde programmeertaal is en met classes enzo werkt?
Nee.
Simpel gezegd: Java is platform onafhankelijk en om dat mogelijk te maken wordt gebruik gemaakt van platform specifieke Virtual Machines (bytecode interpreters) die de platform onafhankelijk bytecode interpreteren en de noodzakelijke systeem calls aanroepen op een bepaald native platform. Omdat Java niet gecompileerd wordt naar platform specifieke assembly code, maar naar platform onafhanklijke bytecode kan je niet om de Virtual Machine heen en kan je dus ook geen native executables bakken.
Signature:
Maximaal
4
regels
pi_33909507
quote:
Op dinsdag 10 januari 2006 14:33 schreef Chimay het volgende:
We hebben nu bij informatica een administratieprogramma moeten maken,
is het eigenlijk mogelijk om via jcreator of een ander programma dat project om te zetten in een "executable file" (.exe)?
Het is mogelijk met jBuilder van Borland om een .exe bestand te maken. Dit wordt daar een native executable genoemd. Het is dan echter alleen mogelijk dit bestand uit te voeren op computers waar jBuilder op geinstalleerd staat. Het is dus verstandiger om gewoon een jar te maken en een .bat bestand er bij te voegen imo.
pi_33909928
fuck, die grafische applicaties zijn nog niet zo simpel, en ik moet het tegen morgen kunnen
pi_33911155
Ik heb er dit van gemaakt, en dat werkt wel aardig volgens mij. De getallen in de array zijn inderdaad oplopend gesorteerd.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private int geefIndex(double[] array, double getal)
{
   int index = 0;
   while(array[index] < getal)
   {
      index++;
      if(index >= 255) return 255;
   }

   if(index == 0) return 0;

   if(Math.abs(array[index] - getal) < Math.abs(array[index - 1] - getal))
      return index;
   else
      return index - 1;
}
  dinsdag 10 januari 2006 @ 18:45:06 #14
52513 whosvegas
The Trickster
pi_33911702
quote:
Op dinsdag 10 januari 2006 15:03 schreef HuHu het volgende:

[..]

Omzetten naar een *.exe is zeer lastig in Java. Wat wel kan is er een uitvoerbaar *.jar bestand van te maken. Wel is dan vereist dat de computer waarop het programma draait Java geinstalleerd heeft.
In MS J# kun je wel een exe ervan maken. Maar dan heb je wel het .NET framework nodig om het uit te voeren.
Are you nuts??
pi_33913631
quote:
Op dinsdag 10 januari 2006 18:27 schreef HuHu het volgende:
Ik heb er dit van gemaakt, en dat werkt wel aardig volgens mij. De getallen in de array zijn inderdaad oplopend gesorteerd.
[ code verwijderd ]
was het niet algemeen geaccepteerd dat men in java altijd accolades/braces gebruikt bij if/while/do statements etc. ? Het is sowieso een goede eigenschap, vind ik om deze altijd te gebruiken.
- don't attribute to malice what can be adequately explained by incompetence -
pi_33914116
quote:
Op dinsdag 10 januari 2006 19:34 schreef Wouske het volgende:

[..]

was het niet algemeen geaccepteerd dat men in java altijd accolades/braces gebruikt bij if/while/do statements etc. ? Het is sowieso een goede eigenschap, vind ik om deze altijd te gebruiken.
Kwestie van voorkeur denk ik. Het is niet perse nodig bij een enkel statement (of combo daarvan) natuurlijk. Maar het overal plaatsen van de accolades is wel een goede eigenschap ja
pi_33915377
De meeste java projecten die ik ben tegengekomen sluiten zich allemaal aan bij de sun java code conventies of een lichte variatie daarop. Bijvoorbeeld alle jakarta projecten (apache java) beroepen zich ook op deze code conventies. In tegenstelling tot programmeertalen als C, wordt binnen de java gemeenschap code met een bijzonder accolade-gebrek toch als onaanvaardbare code beschouwd.
- don't attribute to malice what can be adequately explained by incompetence -
pi_33916574
Als je na een while / if / for méér dan 1 regel code in die lus wilt hebben, dan moet je accolades gebruiken. Dat doe ik ook bij de while.

Als je erna maar 1 regel code hebt, dan mag je ze gebruiken. Ik doe dat dus niet.

Het maakt in principe niets uit.
pi_33916818
quote:
Op dinsdag 10 januari 2006 20:47 schreef HuHu het volgende:
Als je na een while / if / for méér dan 1 regel code in die lus wilt hebben, dan moet je accolades gebruiken. Dat doe ik ook bij de while.

Als je erna maar 1 regel code hebt, dan mag je ze gebruiken. Ik doe dat dus niet.

Het maakt in principe niets uit.
Tja, het is anders wel een goede gewoonte om consequent te zijn in die dingen, dan kan je je ook niet vergissen.
pi_33917034
quote:
Op dinsdag 10 januari 2006 20:53 schreef Chimay het volgende:

[..]

Tja, het is anders wel een goede gewoonte om consequent te zijn in die dingen, dan kan je je ook niet vergissen.
Altijd leuk als iemand vervolgens een regel toevoegt met de juiste inspringing, maar zonder de accolades toe te voegen en na een half uurtje vraagt of je even kan kijken waarom ie het niet doet .
"If you are depressed you shouldn't be in C major!" - Rick Beato
pi_33917167
quote:
Op dinsdag 10 januari 2006 20:59 schreef Litpho het volgende:

[..]

Altijd leuk als iemand vervolgens een regel toevoegt met de juiste inspringing, maar zonder de accolades toe te voegen en na een half uurtje vraagt of je even kan kijken waarom ie het niet doet .
Dan maar hopen dat je java editor automatisch de fouten zoekt bij het compilen.
pi_33917210
quote:
Op dinsdag 10 januari 2006 21:02 schreef Chimay het volgende:

[..]

Dan maar hopen dat je java editor automatisch de fouten zoekt bij het compilen.
Dat is alleen geen fout dus tenzij het ding slim is vind hij het niet .
"If you are depressed you shouldn't be in C major!" - Rick Beato
pi_33917256
quote:
Op dinsdag 10 januari 2006 21:03 schreef Litpho het volgende:

[..]

Dat is alleen geen fout dus tenzij het ding slim is vind hij het niet .
idd, gelukkig nog nooit zoiets meegemaakt
pi_33922517
quote:
Op dinsdag 10 januari 2006 18:27 schreef HuHu het volgende:
Ik heb er dit van gemaakt, en dat werkt wel aardig volgens mij. De getallen in de array zijn inderdaad oplopend gesorteerd.
[ code verwijderd ]
Netjes, zal prima werken lijkt me. Alleen, al je arrays moeten nu wel (minstens) 256 getallen bevatten, anders krijg je een indexoutofboundsexception eh . Maar neem aan dat je array wel zoveel getallen bevat, anders was je wel al achter die fout gekomen .

@ de vraag over het maken van een exe: je kunt wel een exe maken, alleen start die intern dan weer de .jar file op. Je kunt niet om de .jar file heen. Om deze exe te maken kun je gebruik maken van JSmooth (http://jsmooth.sourceforge.net/).
Een dag niet gelachen is een dag niet geleefd.
pi_33922565
quote:
Op dinsdag 10 januari 2006 23:00 schreef Nietmachine het volgende:

[..]

Netjes, zal prima werken lijkt me. Alleen, al je arrays moeten nu wel (minstens) 256 getallen bevatten, anders krijg je een indexoutofboundsexception eh . Maar neem aan dat je array wel zoveel getallen bevat, anders was je wel al achter die fout gekomen .

@ de vraag over het maken van een exe: je kunt wel een exe maken, alleen start die intern dan weer de .jar file op. Je kunt niet om de .jar file heen. Om deze exe te maken kun je gebruik maken van JSmooth (http://jsmooth.sourceforge.net/).
laat al maar, ik voer het wel vanuit jcreator uit
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')