1. Deze website gebruikt cookies. Door deze website verder te gebruiken, gaat u akkoord met ons gebruik van cookies. Leer Meer.

[Algemeen] Programmeren

Discussie in 'PC, Handheld & Algemeen' gestart door Modder-Eter, 5 apr 2007.

  1. Modder-Eter

    Modder-Eter XBW.nl VIP XBW.nl VIP

    Berichten:
    20.630
    Leuk Bevonden:
    5.995
    Daarom zeg ik, maak dan eerst een string aan met newline characters tussen je rijtjes van 8 en geef die string mee. Dat zou moeten werken. ;)

    Dus voordat je ook nog maar daadwerkelijk de OptionPane aan gaat maken je String al maken.
     
  2. GForce

    GForce Danica Patrick

    Berichten:
    14.778
    Leuk Bevonden:
    14
    Maar moet ik die string parsen? Nu heb ik een data mismatch als ik de arraywaardes in de string wil zetten.
     
  3. Modder-Eter

    Modder-Eter XBW.nl VIP XBW.nl VIP

    Berichten:
    20.630
    Leuk Bevonden:
    5.995
    Kun je je code even in code tags plaatsen?
     
  4. GForce

    GForce Danica Patrick

    Berichten:
    14.778
    Leuk Bevonden:
    14
    Staat toch nog op de vorige pagina?
     
  5. Modder-Eter

    Modder-Eter XBW.nl VIP XBW.nl VIP

    Berichten:
    20.630
    Leuk Bevonden:
    5.995
    Je array-initialize code, ja. Maar ik bedoel alles. Zo kan ik natuurlijk niet zien waar de data mismatch mee te maken heeft.
     
  6. GForce

    GForce Danica Patrick

    Berichten:
    14.778
    Leuk Bevonden:
    14
    Oh sry. Zal hem ff posten :)
     
  7. Modder-Eter

    Modder-Eter XBW.nl VIP XBW.nl VIP

    Berichten:
    20.630
    Leuk Bevonden:
    5.995
    Waarschijnlijk doe je namelijk iets heel simpels verkeerd, maar ik zal het zo wel zien. ;)
     
  8. GForce

    GForce Danica Patrick

    Berichten:
    14.778
    Leuk Bevonden:
    14
    Code:
    package hoofdstuk8;
    
    import javax.swing.JOptionPane;
    
    public class Opgave1e {
    
    	
    	public static void main(String[] args) {
    	
    		int[][] mijnArray = new int[8][8];
    		
    		int lengte_1 = mijnArray.length;
    		int lengte_2 = mijnArray[0].length;
    		
    		int z = 64;
    		String output = " ";
    		
    		for (int x = 0; x < lengte_1; x++){
    			for (int y = 0; y < lengte_2; y++){
    				mijnArray[x][y] = z--;
    				output = output + mijnArray[x][y];
    			}
    			JOptionPane.showMessageDialog(null,  output, "mijnArray", JOptionPane.INFORMATION_MESSAGE);
    		}	
    		
    	}
    	
    }
    De error opgelost. Nu krijg ik 8 schermpjes waarin eerst 8 cijfers in 1 regel staan, dan 16, dan 24 etc.

    Die moet met een method te verhelpen zijn.
     
    Laatst bewerkt: 22 apr 2012
  9. Modder-Eter

    Modder-Eter XBW.nl VIP XBW.nl VIP

    Berichten:
    20.630
    Leuk Bevonden:
    5.995
    Deze code geeft overigens geen fout, maar is wel fout voor wat je wilt doen.

    Probeer het in stappen op te lossen:

    -for-loop om de data in te lezen en in de array te stoppen.
    -for-loop om de data uit te lezen en in de string te stoppen.
    -Dan pas de JOptionPane methode aanroepen. ;)
     
  10. GForce

    GForce Danica Patrick

    Berichten:
    14.778
    Leuk Bevonden:
    14
    1e en 3e heb ik al gedaan? 2e heb ik geen idee hoe ik het moet doen. De voorwaarde is dat het met een method moet gebeuren.

     
  11. Modder-Eter

    Modder-Eter XBW.nl VIP XBW.nl VIP

    Berichten:
    20.630
    Leuk Bevonden:
    5.995
    1e heb je gedaan, maar moet je dynamisch maken. Je zou het tweede ook direct kunnen doen, maar een aparte for-loop hiervoor is makkelijker. In principe is de logica van de for-loop hetzelfde als de eerste, alleen de statements erin zijn anders, omdat je de uitgelezen array waarden in een string wilt stoppen.

    Dat laatste doe je echter fout. Let op de scope waarin je de JOptionPane aanroept. Vind je het niet logisch dat je heel veel vensters krijgt? ;)
     
  12. GForce

    GForce Danica Patrick

    Berichten:
    14.778
    Leuk Bevonden:
    14
    Op welke manier kan ik hem dan nog dynamischer maken?

    For loop voor de 2e zou niet logisch zijn? Wel om de loop in de method te zetten en die later in 1x aan te roepen?

    verder heb ik geen idee hoe ik zou moeten beginnen. Heb je een voorzetje?

    Nee eigenlijk zie ik het niet :'-(

    Ik weet dat de oplossing logisch is...
     
  13. Modder-Eter

    Modder-Eter XBW.nl VIP XBW.nl VIP

    Berichten:
    20.630
    Leuk Bevonden:
    5.995
    Code:
    public static void main(String[] args) {
       printInVenster(new int[8][8]);
    }
    
    public static void printInVenster(int[][] mijnArray) {
    
       //Hier je code
    
    }
    
    Als ik uit de opdracht goed begrijp dat je enkel de methode moet aanroepen om een venster te krijgen zou je het zoals hierboven in ieder geval moeten starten.

    In dit geval kan je je code dus dynamisch maken, aangezien je allerlei groottes als argument mee kan geven. Hiervoor moet je dus nog een aanpassing maken in je code, want bij int[6][6] zal het aftellen niet bij 64 moeten beginnen. ;)
    Of moet je de array al vullen voordat je deze meegeeft aan de methode?

    In ieder geval, het is juist wel logisch om een aparte loop te gebruiken voor het uitlezen, aangezien dit een stuk duidelijker is. Als je het in dezelfde loop wilt doen is de array zelf zelfs overbodig, omdat je dan net zo goed direct de String aan kan maken.

    En kijk eens goed binnen welke haakjes je JOptionPane aanroep staat. ;)
     
  14. GForce

    GForce Danica Patrick

    Berichten:
    14.778
    Leuk Bevonden:
    14
    Zo ver was ik ook. Dat snap ik nog wel. Denk ook te weten hoe ik de string moeten aanvullen weet alleen niet hoe ik moet beginnen.

    Klopt.

    Ja in dit geval geeft ik zelf de 64 al op. In dat geval hoeft het dus niet dynamisch te zijn. Dat bedoel je toch? Het uitvoervoorbeeld is 8x8 groot en gaat van 64 naar 1. Deze waardes zijn in deze opdracht gewoon vast

    Idd logsich...
     
  15. Modder-Eter

    Modder-Eter XBW.nl VIP XBW.nl VIP

    Berichten:
    20.630
    Leuk Bevonden:
    5.995
    Een string aanvullen is heel makkelijk. Bedenk eerst eens hoe je 1 regel wilt vullen, dus: 64 63 62 61 60 ...
    En dan wil je telkens na de binnenste loop een nieuwe regel, aangezien je dan de eerste rij hebt gehad. Hoop dat je er daarmee wel uit komt.
     
  16. GForce

    GForce Danica Patrick

    Berichten:
    14.778
    Leuk Bevonden:
    14
    Code:
    public static void main(String[] args) {
    	
    		int[][] mijnArray = new int[8][8];
    		
    		int lengte_1 = mijnArray.length;
    		int lengte_2 = mijnArray[0].length;
    		
    		int z = 64;
    		String output = " ";
    		
    		for (int x = 0; x < lengte_1; x++){
    			    output = output + "\n";
    			for (int y = 0; y < lengte_2; y++){
    				mijnArray[x][y] = z--;
    				output = output + " " + mijnArray[x][y];
    			}
    			
    		}	
    		JOptionPane.showMessageDialog(null,  output, "mijnArray", JOptionPane.INFORMATION_MESSAGE);
    	}
    	
    }
    Zo dus.

    Alleen nu de methode nog. Snap eigenlijk niet waarom (zal wel zijn zodat je de opdracht begrijpt) want dit is een stuk sneller imo.
     
  17. Modder-Eter

    Modder-Eter XBW.nl VIP XBW.nl VIP

    Berichten:
    20.630
    Leuk Bevonden:
    5.995
    Je krijgt dan dit dus, ook al heb ik de output niet netjes geformat:

    [​IMG]

    En code moet niet binnen main. Main is het startpunt van je programma, en wat ze je nu eigenlijk leren is je echte code in de methode te stoppen en die methodes vanuit main aan te roepen.
    En let op je newline. ;) Wat gebeurt er nu bij de eerste keer uitvoeren van je for-loop? ;)
     
  18. GForce

    GForce Danica Patrick

    Berichten:
    14.778
    Leuk Bevonden:
    14
    [​IMG]

    Dit is wat ik krijg zonder de method. Dat is correct dus dat deel van de code klopt?

    Dat de method buiten de main staat weet ik. We zijn op school met dat domme kareltje begonnen in BlueJ. Daar waren in de "wereld" 10 tallen methods gemaakt die we in de main aanriepen.

    Jij hebt int z = lengte_1 * lengte_2? Kan de rest van je code niet zien, venster zit ervoor :)
     
    Laatst bewerkt: 22 apr 2012
  19. Modder-Eter

    Modder-Eter XBW.nl VIP XBW.nl VIP

    Berichten:
    20.630
    Leuk Bevonden:
    5.995
    Als je je code nu in je methode stopt en die methode in je main aanroept, dan werkt hij. ;)
    Dat is de hele bedoeling.

    Die length_1 * length_2 heeft uiteraard een reden (en het venster voor de code ook :p).
     
  20. GForce

    GForce Danica Patrick

    Berichten:
    14.778
    Leuk Bevonden:
    14
    Je zou daar dan een JOptionPane met een vraag voor kunnen zetten en zo variablen voor 8 en 8 kunnen vragen(?)

    }:]
     

Deel Deze Pagina