[Java] Hoe een method in een case laden

Pagina: 1
Acties:

  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Ik heb dus een stukje code geschreven. Waarin ik 12 opties heb 1 tot en met 12 waarvan nummer 4 uitgezonderd.

Nu heb ik een switch hierin gezet om dit te laden. Als ik dus op 1 druk dan moet zich een nieuw consolewindow openen en zich daarin de Method openen. Daarin moet dus ook de invoer voor de eventuele method gevraagd worden.

Op dit moment heb ik alleen voor case 1 iets ingevoerd en dat werkt dus niet. Ik snap alleen niet waarom.

Ik zal de code hieronder zetten. Waarschijnlijk is het voor jullie erg simpel, maar ik ben der zelf best trost op aangezien niemand van mijn college dit kan 8) !

Java:
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
import element.*;
import java.util.Random;

public class Testing
{
 public static void main(String args[])
 {
  int t;
  ConsoleWindow c = new ConsoleWindow();

  do
  {
  c.out.println("1. Random number between high and low");
  c.out.println("2.  ");
  c.out.println("3.  ");
  c.out.println("4.  ");
  c.out.println("5.  ");
  c.out.println("6.  ");
  c.out.println("7.  ");
  c.out.println("8.  ");
  c.out.println("9.  ");
  c.out.println("10. ");
  c.out.println("11. ");
  c.out.println("12. ");
  c.out.println("Kies een programma om uit te voeren?");
  t = c.input.readInt();

  if (t < 1)
    {
    c.out.println("Er is geen lagere optie als 1 beschikbaar!");
    c.out.println("Probeer het opnieuw!!!!");
    }

  if (t == 4)
    {
    c.out.println("Er is geen optie 4 beschikbaar!");
    c.out.println("Probeer het opnieuw!!!!");
    }

  if (t > 12)
    {
    c.out.println("Er is geen hogere optie als 12 beschikbaar!");
    c.out.println("Probeer het opnieuw!!!!");
    }
  }
  while ((t < 0) || t == 4 || (t > 12));

  switch (t)
  {
    case 1:
      ConsoleWindow d = new ConsoleWindow();
      keuze1();
      break;
    case 2:
      ConsoleWindow e = new ConsoleWindow();
      break;
    case 3:
      ConsoleWindow f = new ConsoleWindow();
      break;
    case 5:
      ConsoleWindow g = new ConsoleWindow();
      break;
    case 6:
      ConsoleWindow h = new ConsoleWindow();
      break;
    case 7:
      ConsoleWindow i = new ConsoleWindow();
      break;
    case 8:
      ConsoleWindow j = new ConsoleWindow();
      break;
    case 9:
      ConsoleWindow k = new ConsoleWindow();
      break;
    case 10:
      ConsoleWindow l = new ConsoleWindow();
      break;
    case 11:
      ConsoleWindow m = new ConsoleWindow();
      break;
    case 12:
      ConsoleWindow n = new ConsoleWindow();
      break;
  }

 }
  public static int keuze1(int low, int high, Random gen)
    // pre: low <= high
    // post: returns uniformly random value v, low <= v <= high
    {
           return (Math.abs(gen.nextInt())%(high-low+1))+low;
    }
}


Ps. Het spijt me dat ik zelf nog geen console window kan maken (wordt nu door het console window gedaan) maar dat hebben we nog niet gehad, maarals mij iemand dat hier kan vertellen dan houd ik mij daarvoor aanbevolen!

[ Voor 15% gewijzigd door BSeB op 25-04-2003 12:19 ]


Verwijderd

Je doet nu een:
Java:
1
2
3
4
5
6
while ((t < 0) || t == 4 || (t > 12)); 

switch(t)
{
  //blah blah
}

Het enige dat je hier vergeet zijn de { en }
Java:
1
2
3
4
5
6
7
while ((t < 0) || t == 4 || (t > 12)) //en die ; is nu dus weg
{
    switch(t)
    {
       //blah blah
    }
}

:Y)

[ Voor 8% gewijzigd door Verwijderd op 25-04-2003 12:29 ]


  • zerok
  • Registratie: November 2001
  • Laatst online: 18-08 18:27

zerok

geen

waarom die bij keuze 1 niet werkt is omdat je als functie definitie:
Java:
1
 public static int keuze1(int low, int high, Random gen)

hebt staan maar als je die functie aanroept doe je alleen maar
Java:
1
keuze1()
je moet wel de parameters mee geven (int low etc.)
o en bdw dit soort constructies gebruik ik al iets langer :) (2 weken)
als je praktijk voorbeelden wil hebben die ik gemaakt heb moet je maar ff mailen

[ Voor 15% gewijzigd door zerok op 25-04-2003 12:35 ]

"never argue with idiots they drag you down to their level and beat you with experience" dilbert


  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
OK, dat snap ik, ik heb even de haken aangepast.

Maar nu idd, die waardes die ik in moet vullen, hoe moet dat dan, krijg ik dan zoiets:

keuze1(1,5)

Anders zou ik het niet weten, of moet ik het declarenen als low = 1 en high = 5

  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Verwijderd schreef op 25 april 2003 @ 12:27:
Je doet nu een:
Java:
1
2
3
4
5
6
while ((t < 0) || t == 4 || (t > 12)); 

switch(t)
{
  //blah blah
}

Het enige dat je hier vergeet zijn de { en }
Java:
1
2
3
4
5
6
7
while ((t < 0) || t == 4 || (t > 12)) //en die ; is nu dus weg
{
    switch(t)
    {
       //blah blah
    }
}

:Y)
Die ; waar jij het over hebt moet er dus WEL staan anders werkt de rest van je prog niet. Hij weet anders niet waar de voorwaarden van je loop stoppen.

Verwijderd

BSeB schreef op 25 April 2003 @ 13:07:
[...]


Die ; waar jij het over hebt moet er dus WEL staan anders werkt de rest van je prog niet. Hij weet anders niet waar de voorwaarden van je loop stoppen.
Oeps..het is een do..while loop sorry...had die do niet zien staan

Verwijderd

Maar hij voert nu dus niets uit he. Die do..while loop gaat gewoon door als je getallen tussen 1 en 12 blijft geven. Die switch statement wordt dan niet uitgevoerd

  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Verwijderd schreef op 25 April 2003 @ 13:15:
[...]

Oeps..het is een do..while loop sorry...had die do niet zien staan
Geeft niet. Btw ik heb nu het volgende:
Java:
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
98
import element.*;
import java.util.Random;

public class Testing
{
 public static void main(String args[])
 {
  int t;
  ConsoleWindow c = new ConsoleWindow();

  do
  {
  c.out.println("1. Random number between high and low");
  c.out.println("2.  ");
  c.out.println("3.  ");
  c.out.println("4.  ");
  c.out.println("5.  ");
  c.out.println("6.  ");
  c.out.println("7.  ");
  c.out.println("8.  ");
  c.out.println("9.  ");
  c.out.println("10. ");
  c.out.println("11. ");
  c.out.println("12. ");
  c.out.println("Kies een programma om uit te voeren?");
  t = c.input.readInt();

  if (t < 1)
    {
    c.out.println("Er is geen lagere optie als 1 beschikbaar!");
    c.out.println("Probeer het opnieuw!!!!");
    }

  if (t == 4)
    {
    c.out.println("Er is geen optie 4 beschikbaar!");
    c.out.println("Probeer het opnieuw!!!!");
    }

  if (t > 12)
    {
    c.out.println("Er is geen hogere optie als 12 beschikbaar!");
    c.out.println("Probeer het opnieuw!!!!");
    }
  }
  while ((t < 0) || t == 4 || (t > 12));
  {
    switch (t)
    {
      case 1:
      {
        ConsoleWindow d = new ConsoleWindow();
        int low=1, high=5;
        Random generator = new Random();
        keuze1(low, high, generator);
        break;
      }
      case 2:
        ConsoleWindow e = new ConsoleWindow();
        break;
      case 3:
        ConsoleWindow f = new ConsoleWindow();
        break;
      case 5:
        ConsoleWindow g = new ConsoleWindow();
        break;
      case 6:
        ConsoleWindow h = new ConsoleWindow();
        break;
      case 7:
        ConsoleWindow i = new ConsoleWindow();
        break;
      case 8:
        ConsoleWindow j = new ConsoleWindow();
        break;
      case 9:
        ConsoleWindow k = new ConsoleWindow();
        break;
      case 10:
        ConsoleWindow l = new ConsoleWindow();
        break;
      case 11:
        ConsoleWindow m = new ConsoleWindow();
        break;
      case 12:
        ConsoleWindow n = new ConsoleWindow();
        break;
    }
  }

 }
  public static int keuze1(int low, int high, Random gen)
    // pre: low <= high
    // post: returns uniformly random value v, low <= v <= high
    {
           return (Math.abs(gen.nextInt())%(high-low+1))+low;
    }
}


Hierin kan ik het gewoon compileren. Geen fouten meer alleen laat hij nu geen waardes zien in het nieuwe console window!!! Hij opent dit tweede window dus wel alleen geeft hij geen resultaat van "keuze1"

[ Voor 7% gewijzigd door BSeB op 25-04-2003 13:19 ]


  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Oeps, nu zie ik waarom hij niks op het scherm print, heb die opdracht niet verwerkt, hij voert nu wel mijn proggie uit, hij zet alleen nog niks op het scherm door mijn vergeten printopdracht.

  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Kan iemand mij hier vertellen hoe ik zelf een console window moet klussen?

Verder krijg ik het dus niet voor elkaar om een antwoord te krijgen op console window. Waarom lukt dit niet ik snap er geen drol van iig.

[ Voor 49% gewijzigd door BSeB op 25-04-2003 13:43 ]


  • momania
  • Registratie: Mei 2000
  • Laatst online: 17:50

momania

iPhone 30! Bam!

BSeB schreef op 25 april 2003 @ 13:34:
Verder krijg ik het dus niet voor elkaar om een antwoord te krijgen op console window. Waarom lukt dit niet ik snap er geen drol van iig.
De methode keuze1 geeft nog een int terug die je niet afvangt.
Zoiets moet het worden denk ik:
Java:
1
2
3
4
5
6
7
8
9
case 1: 
      { 
        ConsoleWindow d = new ConsoleWindow(); 
        // let hier op dat losse variabelen om door te geven 
        // aan de methode een beetje overkill was
        int result = keuze1(1, 5, new Random());
        d.out.println("Resultaat: "+result);
        break; 
      } 

[ Voor 3% gewijzigd door momania op 25-04-2003 13:52 ]

Neem je whisky mee, is het te weinig... *zucht*


  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Gelukt, hij werkt nu zoals het moet. Loop nu alleen tegen het volgende aan, zijn 2 dingen. Als hij deze methode heeft ujitgevoerd, dan moet hij me 2 opties bieden, dat zijn de volgende. Het afsluiten van het console window en weer terug gaan naar consolewindow c. D moet dus gesloten worden en dat is op zich geen probleem.

Alleen als ik deze regel gebruik:

System.exit(0);

dan sluit hij alle vensters en dat is dus niet de bedoeling.

Verder wil ik bij een andere optie hebben dat als ik daarvoor kies hij het programma opnieuw laat lopen en hij dus opnieuw naar de invoer vraagt.

Java:
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
{
        ConsoleWindow d = new ConsoleWindow();
        int low, high;
        
        do
         {
          d.out.println("Wat is de kleinste waarde?");
          low = d.input.readInt();
          d.out.println("Wat is de grootste waarde?");
          high = d.input.readInt();
          if (high < low)
          {
           d.out.println("De waardes zijn niet correct! Probeer het opnieuw!");
          }
        }
        while (high < low);
        
        Random generator = new Random();
        int result = keuze1(low, high, generator);
        d.out.println("Het antwoord is:");
        d.out.println(result);
        int antwoord;
        do
        {

           d.out.println("1. Herhaal de methode!");
           d.out.println("2. Stop het programma en ga terug naar het hoofdmenu!");
           antwoord = d.input.readInt();
           if (antwoord < 1 || antwoord > 2)
           d.out.println("Er zijn alleen de opties 1 en 2 beschikbaar!");
        }
         while (antwoord < 1 || antwoord > 2);
        break;
      }


Maar ik heb het al geprobeer met een do/while loop maar dat lukte me niet.
Pagina: 1