Toon posts:

[Java] opbouw van een lus voor het uitprinten van een array

Pagina: 1
Acties:
  • 103 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
doelstelling: Het maken van een lotto simulatie

opbouw van het programma

main:
code:
1
2
3
4
5
public static void main(String[] args)
    {
        Program lotto = new Program();
        lotto.speel();
    }


methode die alles in juiste banen houd:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
public void speel()
    {
        byte[][] uwRoosters;
        int[] uwJokers;
        byte[] lottoTrekking;
        int jokerTrekking;

        int aantalroosters = vraagaantalroosters();
        byte[][] roosters;
        roosters = vulroosters(aantalroosters);
        drukRoosters(roosters);
        
    }


Eerst word er aan de gebruiken gevraagd hoeveel roosters hij wil invullen:

code:
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
public int vraagaantalroosters()
    {
        int aantalroosters = 0;
        String correcteingave = "neen";
        do
        {
            System.out.println("Met hoeveel roosters wilt u spelen? U kan kiezen tussen 2/4/6/8/10/12");
            aantalroosters = Integer.parseInt(Stream.readString());
            switch (aantalroosters)
            {
                case 2:
                    correcteingave = "ja";
                    break;
                case 4:
                    correcteingave = "ja";
                    break;
                case 6:
                    correcteingave = "ja";
                    break;
                case 8:
                    correcteingave = "ja";
                    break;
                case 10:
                    correcteingave = "ja";
                    break;
                case 12:
                    correcteingave = "ja";
                    break;
                default:
                    System.out.println("u gaf een niet geldige waarde in");
            }
        } while (correcteingave.equals("neen"));
        return aantalroosters;
    }


hierna zouden de roosters als volgt moeten afgedrukt worden:
1-3-5
2-4-6
7-9-11
8-10-12


probleem:
Zolang ik niet meer dan 6 roosters opvraag print hij alles op de juiste manier af maar indien ik meer dan 8 vraag gaat hij als volgt tewerk:
1-3-5-7-9...
2-4-6-8-10...

het probleem zit hem in volgende code:
code:
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
public void drukRoosters(byte[][] roosters)
    {
        String begin = "+-------------------+";
        String voorlopig = "";

        //deze functie print de bovenkant van het grid af
        for (int i = 0; i < roosters[0].length; i += 2)
        {
            voorlopig += begin;
        }
        System.out.println(voorlopig);
        voorlopig = "";
        int waarde = 6;

        // hier gaan we de getallen in strings gaan steken en zo ze op het scherm gaan printen met de 
        // nodige scheidingslijnen
        // dit is echter nogmaar alleen geldig voor de eerste 3.
        do
        {

            for (int i = 0; i < roosters[0].length; i += 2)
            {
                voorlopig += "|";
                for (int j = waarde - 6; j < waarde; j++)
                {
                    if (roosters[j][i] < 10)
                    {
                        voorlopig += "  " + roosters[j][i];
                    }
                    else
                    {
                        voorlopig += " " + roosters[j][i];
                    }
                }
                voorlopig += " |";
            }
            waarde += 6;
            voorlopig += "\n";
        } while (waarde <= 42);

        //print de onderkant van het grid af.
        for (int i = 0; i < roosters[0].length; i += 2)
        {
            voorlopig += begin;
        }
        System.out.println(voorlopig);
        voorlopig = "";
        ////for (int i = 0; i < roosters[0].length; i += 2)
        //{
        //    voorlopig += "\t  +\t  +\n";
        //}
        //System.out.println(voorlopig);


        //deze functie print de bovenkant van het grid af
        for (int i = 0; i < roosters[0].length; i += 2)
        {
            voorlopig += begin;
        }
        System.out.println(voorlopig);
        voorlopig = "";
        waarde = 6;

        // hier gaan we de getallen in strings gaan steken en zo ze op het scherm gaan printen met de 
        // nodige scheidingslijnen
        // dit is echter nogmaar alleen geldig voor de eerste 3.
        do
        {

            for (int i = 1; i < roosters[0].length; i += 2)
            {
                voorlopig += "|";
                for (int j = waarde - 6; j < waarde; j++)
                {
                    if (roosters[j][i] < 10)
                    {
                        voorlopig += "  " + roosters[j][i];
                    }
                    else
                    {
                        voorlopig += " " + roosters[j][i];
                    }
                }
                voorlopig += " |";
            }
            waarde += 6;
            voorlopig += "\n";
        } while (waarde <= 42);

        //print de onderkant van het grid af.
        for (int i = 0; i < roosters[0].length; i += 2)
        {
            voorlopig += begin;
        }
        System.out.println(voorlopig);
        voorlopig = "";
    }


eenmaal ik meer dan 6 roosters opvraag gaat hij nogaltijd proberen ze naast elkaar te plakken en om eerlijk te zijn, ik weet niet hoe ik het zou moeten oplossen om de volgende roosters er onder te plaatsen.

-de stream class die gebruikt word is iets dat enkel zorgt voor het inlezen van de lijnen.
-geheel het programma moet uitgevoerd worden in dos
-stream class kan je hier afhalen

Ik hoop dat ik duidelijk genoeg geweest ben in mijn uitleg en ik zou het enorm fijn vinden mocht iemand mij uit de nood kunnen helpen.

doelstelling :

+-------------------++-------------------++-------------------+
| 1 2 3 4 5 6 || 1 2 3 4 5 6 || 1 2 3 4 5 6 |
| 1 2 3 4 5 6 || 1 2 3 4 5 6 || 1 2 3 4 5 6 |
| 1 2 3 4 5 6 || 1 2 3 4 5 6 || 1 2 3 4 5 6 |
| 1 2 3 4 5 6 || 1 2 3 4 5 6 || 1 2 3 4 5 6 |
| 1 2 3 4 5 6 || 1 2 3 4 5 6 || 1 2 3 4 5 6 |
+-------------------++-------------------++-------------------+
+-------------------++-------------------++-------------------+
| 1 2 3 4 5 6 || 1 2 3 4 5 6 || 1 2 3 4 5 6 |
| 1 2 3 4 5 6 || 1 2 3 4 5 6 || 1 2 3 4 5 6 |
| 1 2 3 4 5 6 || 1 2 3 4 5 6 || 1 2 3 4 5 6 |
| 1 2 3 4 5 6 || 1 2 3 4 5 6 || 1 2 3 4 5 6 |
| 1 2 3 4 5 6 || 1 2 3 4 5 6 || 1 2 3 4 5 6 |
+-------------------++-------------------++-------------------+
+-------------------++-------------------++-------------------+
| 1 2 3 4 5 6 || 1 2 3 4 5 6 || 1 2 3 4 5 6 |
| 1 2 3 4 5 6 || 1 2 3 4 5 6 || 1 2 3 4 5 6 |
| 1 2 3 4 5 6 || 1 2 3 4 5 6 || 1 2 3 4 5 6 |
| 1 2 3 4 5 6 || 1 2 3 4 5 6 || 1 2 3 4 5 6 |
| 1 2 3 4 5 6 || 1 2 3 4 5 6 || 1 2 3 4 5 6 |
+-------------------++-------------------++-------------------+
+-------------------++-------------------++-------------------+
| 1 2 3 4 5 6 || 1 2 3 4 5 6 || 1 2 3 4 5 6 |
| 1 2 3 4 5 6 || 1 2 3 4 5 6 || 1 2 3 4 5 6 |
| 1 2 3 4 5 6 || 1 2 3 4 5 6 || 1 2 3 4 5 6 |
| 1 2 3 4 5 6 || 1 2 3 4 5 6 || 1 2 3 4 5 6 |
| 1 2 3 4 5 6 || 1 2 3 4 5 6 || 1 2 3 4 5 6 |
+-------------------++-------------------++-------------------+

dat indien het er 12 zijn ze zo zouden weergegeven worden in een dosbox.
Cijfers lopen dan wel van 1 tot 42.


alvast bedankt

[ Voor 16% gewijzigd door Verwijderd op 30-12-2006 15:08 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 14:52

.oisyn

Moderator Devschuur®

Demotivational Speaker

Eerste opmerking: gebruik alsjeblieft een boolean om bij te houden of iets goed is of niet, ipv een String :). Ten tweede snap ik nog steeds niet wat nou uiteindelijk wel de bedoeling is bij meer dan 6 roosters.

Ten derde: het is "class" of "klasse", maar niet "classe" ;)

[ Voor 45% gewijzigd door .oisyn op 30-12-2006 14:57 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 14:58
Tja, typisch een kwestie van netjes code organiseren en zelf debuggen.

Je aannames kloppen al niet, en je probleemomschrijving ook niet. Je zegt bijvoorbeeld dat je code werkt voor drie roosters, maar volgens mij schrijf je hoe dan ook 7 regels tussen je afscheidingen. (waarde loopt van 6 tot en met 42 in stappen van 6, geeft 7 iteraties). Verder zeg je dat je een uitvoer van drie regels hoog wil hebben, maar je voorbeelduitvoer bevat vijf regels tussen de afscheidingen. Wat is het nu? Als je specificatie, je voorbeelduitvoer én je code inconsistent zijn, klopt twee van de drie niet.

Ik denk dat je je eigen code niet begrijpt en sterker nog: ik denk dat je niet eens goed weet wat je wil bereiken. Het heeft dan ook weinig nut om je code te herschrijven naar iets wat wel werkt, want waarschijnlijk is dat nog niet wat je wil en het is zeker dat je daar niets van leert. Mijn advies: wis al je code, denk eens goed over je probleem na en begin opnieuw. De huidige code valt niet meer te redden.

Verder is GoT niet de eerste plek waar je om hulp zou moeten vragen bij je schoolopgaven. Klopt eerst eens bij je leraar aan.

[ Voor 5% gewijzigd door Soultaker op 30-12-2006 17:35 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
Tja, ik heb niet veel toe te voegen bij hetgeen Soultaker zegt. Probeer zelf eerst eens even je code te debuggen, logisch na te denken hoe je hetgeen je wilt kunt bereiken, en daarnaartoe werken.

https://fgheysels.github.io/