1 2 | 2 5 9 12 14 18 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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; } } |
Als je dit goed wilt programmeren maakt het uit of je array gesorteerd is of niet.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?
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.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)?
Jammer, ik kan me nog wel herinneren dat bij Turbo Pascal dit wel kon.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.
Even een zijdelings opmerking, let er wel op dat een array index niet bij 1 begint, zoals je dat hier schets, maar bij 0quote: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?
Nee.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?
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.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)?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | { 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; } |
In MS J# kun je wel een exe ervan maken. Maar dan heb je wel het .NET framework nodig om het uit te voeren.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.
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.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 ]
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 jaquote: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.
Tja, het is anders wel een goede gewoonte om consequent te zijn in die dingen, dan kan je je ook niet vergissen.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.
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 doetquote: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.
Dan maar hopen dat je java editor automatisch de fouten zoekt bij het compilen.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.
Dat is alleen geen fout dus tenzij het ding slim is vind hij het nietquote: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.![]()
idd, gelukkig nog nooit zoiets meegemaaktquote: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.
Netjes, zal prima werken lijkt me. Alleen, al je arrays moeten nu wel (minstens) 256 getallen bevatten, anders krijg je een indexoutofboundsexception ehquote: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 ]
laat al maar, ik voer het wel vanuit jcreator uitquote: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/).
patserquote:Op dinsdag 10 januari 2006 20:18 schreef Wouske het volgende:
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.
Ik zou de voorkeur geven aan een binary search. Jij wilt blijkbaar gewoon de array van voor tot achter doorlopen. Als je een beetje een grote array hebt of kunt hebben, kun je dat met een binary search veel efficienter doen.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 ]
Heb je het over red black tree en dergelijke algoritmes? In Java zit volgens mij ook een voorgebakken priority_queue container. Lekker makkelijk sorteren: getallen erin proppen en ze staan op volgorde.quote:Op woensdag 11 januari 2006 00:32 schreef gday het volgende:
[..]
Ik zou de voorkeur geven aan een binary search. Jij wilt blijkbaar gewoon de array van voor tot achter doorlopen. Als je een beetje een grote array hebt of kunt hebben, kun je dat met een binary search veel efficienter doen.
Dat zei ik ook al in post 7. Alleen ik denk dat ik niet begrepen werd. Daarom heb ik ook maar een voorbeeldje gemaakt van een standaard binairy search. Deze search heb ik op het einde aangepastquote:Op woensdag 11 januari 2006 00:32 schreef gday het volgende:
Ik zou de voorkeur geven aan een binary search. Jij wilt blijkbaar gewoon de array van voor tot achter doorlopen. Als je een beetje een grote array hebt of kunt hebben, kun je dat met een binary search veel efficienter doen.
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 | private int giveMinDifference(int[] array, int searchValue) { int bot = -1; int top = array.length; while (top - bot > 1) { int mid = (top + bot)/2; if (array[mid] < searchValue) { bot = mid; } else { top = mid; } } /* tot zo ver is het standaard binairy search wat ik hier onder doe is in onze rij getallen 1 naar voren gaan en bekijk de volgende 3 getallen. Het getal met het kleinste verschil is je oplossing Ik doe dit omdat je niet precies de garantie hebt dat je op het getal uit komt met de waarde die het dichtste bij komt bij je gezochte waarde. Voor de mensen die het niet geloven dat deze laatste stap ook noodzakelijk is kan ik een voorbeeld geven */ top -=1; int dif = Math.abs(array[top]-searchValue); for(int i = 0;i<=2;i++) { int newDif = Math.abs(array[top+i]-searchValue); if ( newDif < dif ){ dif = newDif; } } return dif; } |
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 | import javax.swing.*; import java.awt.event.*; public class ButtonTest { public static void main(String[] args) { ButtonFrame frame = new ButtonFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } class ButtonFrame extends JFrame { public ButtonFrame() { setTitle("ButtonTest"); setSize(300, 200); ButtonPanel panel = new ButtonPanel(); add(panel); ButtonPanel2 panel2 = new ButtonPanel2(); add(panel2); } } class ButtonPanel extends JPanel { public ButtonPanel() { setLayout(null); setOpaque(false); //create buttons JButton yellowButton = new JButton("yellow"); //set location yellowButton.setBounds(10, 10, 50, 30); //add buttons to pane; add(yellowButton); } } class ButtonPanel2 extends JPanel { public ButtonPanel2() { setLayout(null); setOpaque(false); //create buttons JButton blueButton = new JButton("blue"); //set location blueButton.setBounds(10, 40, 50, 30); //add buttons to pane; add(blueButton); } } |
-edit-quote:Op zaterdag 14 januari 2006 16:07 schreef Sphere2k4 het volgende:
Ik heb een vraagje over transparantie van JPanels.
[ code verwijderd ]
Ik wil dat zowel ButtonPanel als ButtonPanel2 'doorzichtig' zijn. Hiermee bedoel ik dat hij alleen de componenten laat zien en geen background en dus de onderliggende layer ook deels zichtbaar is.
Hiervoor heb ik setOpaque(false) gebruikt wat zou moeten werken maar dat doet het niet.
Iemand die hier een oplossing voor heeft?
Zo'n combo zou ik ook wel fijn vinden ja. Daarom bleef ik ook nog lang bij BlueJ, vanwege die overzicht. Maar de traagheid en bugs hebben me doen besluiten om toch maar naar JCreator Pro te gaan. Die is echt veel fijner ook dan BlueJ, op het UML na dan. Magoed, de rest weegt daar wel tegenop.quote:Op donderdag 9 februari 2006 11:42 schreef Lod het volgende:
Mijn voorkeur gaat persoonlijk meer uit naar een combinatie van BlueJ en/of netbeans. Eclipse voelt erg traag aan om één of andere reden.
En van BlueJ vind ik de grafische presentatie (UML-achtig) en relaties van de klassen onderling erg handig/geinig.
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 | { tekst.setFont(Font("arial",18)); UitvoerVeld.setText(tekst); // to do: Vergroot de tekst } void NormaalButton_actionPerformed(java.awt.event.ActionEvent event) { UitvoerVeld.setText(tekst); // to do: code goes here. } void VetButton_actionPerformed(java.awt.event.ActionEvent event) { tekst.setFont(BOLD); UitvoerVeld.setText(tekst); // to do: code goes here. } } |
1 2 3 4 5 6 7 8 | tekst.setFont(Font("arial",18)); ^ Error: D:\Documents and Settings\naam\\Mijn documenten\School\Opdracht 21\Applet1.java(159): Undefined variable: BOLD tekst.setFont(BOLD); ^ 2 errors Build Failed |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |