[java] probleem met input

Moderators: jkien, Xilvo

Reageer
Berichten: 43

[java] probleem met input

Eerst even kort het programma schetsen. Zolang de letter j ingegeven wordt, worden er cirkels gecreeërd en via een opgegeven (verplicht positieve) straal wordt met een statische methode ook de oppervlakte berekend. Wanneer een ander letter ingeveven wordt en de lus dus doorbroken is, verschijnt er een menu waarin men door middel van een cijfer 1, 2, 3 of 4 een aantal gegevens zoals het totaal aantal cirkels, aantal foute cirkels (met negatieve straal), grootste oppervlakte enz. Ik heb dit geprogrammeerd en de compiler geeft geen fouten. Ik stoot echter op een probleem. Eerst even de code geven:

Code: Selecteer alles

public class Examenoefening

{

public static double berekenOppervlakte(double straal)

{

double oppervlakte=straal*straal*Math.PI;

return oppervlakte;

}

public static void main(String[]args)

{

char keuze; double straal; double oppervlakte; int menu; int aantalGoed=0; int aantalFout=0; double grootsteOpp=0;

Input inp=new Input();

System.out.println("Geef de letter j in voor nieuwe cirkel: ");

keuze=inp.readChar();

inp.readLine();

while(keuze=='j')

{

System.out.println("Geef de straal in: ");

straal=inp.readDouble();

    

    if (straal>=0)

    {

        aantalGoed++;

    	System.out.println("De straal is "+straal+ "cm.");

    	System.out.println("De oppervlakte is "+berekenOppervlakte(straal)+ "cm.");

    	oppervlakte=berekenOppervlakte(straal);

    	if (oppervlakte>grootsteOpp) grootsteOpp=oppervlakte;

   

    }

    else { aantalFout++; System.out.println("Foutieve straal.");}

    

   

    System.out.println("Geef j in voor een nieuwe cirkel: ");

    keuze=inp.readChar();inp.readLine();

}

if(keuze!='j')

{

System.out.println("Menu:");

System.out.println("Typ 1 voor aantal goede stralen:");

System.out.println("Typ 2 voor aantal foutieve stralen:");

System.out.println("Typ 3 voor totaal aantal stralen:");

System.out.println("Typ 4 voor grootste oppervlakte:");

menu=inp.readInt();

while (menu<=4 && menu>=1)

{

switch(menu)

{

case 1: System.out.println("Aantal goede stralen: "+aantalGoed);break;

case 2: System.out.println("Aantal foutieve stralen: "+aantalFout);break;

case 3: System.out.println("Totaal aantal stralen: "+(aantalGoed+aantalFout));break;

case 4: System.out.println("Grootste oppervlakte: "+grootsteOpp);break;

default: System.out.println("Ongeldig.");

}

System.out.println("Menu:");

System.out.println("Typ 1 voor aantal goede stralen:");

System.out.println("Typ 2 voor aantal foutieve stralen:");

System.out.println("Typ 3 voor totaal aantal stralen:");

System.out.println("Typ 4 voor grootste oppervlakte:");

menu=inp.readInt();

}

System.out.println("Einde");

}

}

}
Het invoeren van de eerste cirkel gaat goed. Maar wanneer er dan gevraagd wordt j te typen voor het ingeven van de tweede cirkel, en ik wel degelijk j typ, dan verschijnt onmiddellijk het menu, ipv de vraag naar de straal van de cirkel. Het gaat dus over deze 2 lijnen:

Code: Selecteer alles

System.out.println("Geef j in voor een nieuwe cirkel: ");

    keuze=inp.readChar();inp.readLine();
Wanneer ik nu zelf instel dat keuze='j', dus zonder invoer van de gebruiker zelf, dan werkt alles perfect. Volgens mij wordt dus op een of andere manier de input verkeerd gelezen of geïnterpreteerd... maar ik vind de oplossing niet.

PS: Wss kunnen er wel heel wat zaken beter of korter geschreven worden, maar daar gaat het niet om. Het is nog maar mijn eerste jaar Java en als het programma werkt ben ik al tevreden...

Berichten: 2.589

Re: [java] probleem met input

Ik zie het zo dadelijk niet, bijkomend als ik alles copy paste in bv kladblok dan valt de volledige opmaak weg?

Mss te veel of te weinig { alhoewel ik dit niet vermoedt indien het wel werkt zonder die invoer.

Berichten: 99

Re: [java] probleem met input

Bert F schreef:Ik zie het zo dadelijk niet, bijkomend als ik alles copy paste in bv kladblok dan valt de volledige opmaak weg?

Mss te veel of te weinig { alhoewel ik dit niet vermoedt indien het wel werkt zonder die invoer.


Moet je ff op de quote knop duwen en van daaruit de code copy en pasten :D

Berichten: 2.589

Re: [java] probleem met input

Welke compiler gebruik je? eclipse geeft vrijwel onmiddellijk aan dat hij Input niet kan initiëren onderlijnd het in het rood zodat je dadelijk ziet dat het fout is, zonder te moeten wachten op de compiler fout.

Deze fout omwille van: http://java.syntaxerrors.info/index.php?ti...te_the_type_Foo probleem is dus dat je met een abstracte class een object wil generen en dat lukt niet omdat zo'n abstracte class enkel een soort mal is, een definitie die verder geïmplementeerd moet worden door andere subclasse waarvan je dan wel een object kunt genereren.

Dus ik zou zeggen moet je die class Input gebruiken?==>> zo ja dan moet je een subclass zoeken zoals in het voorbeeld.

Zo nee dan zou ik gewoon een eigen andere class maken om de input af te handelen.

Iets in de trend van System.in.ReadChar en dan nagaan wat de unicode is van het ingegeven teken, om te weten wat het was en om dan gepast te reageren.

Die system.in.ReadChar werkt enkel in een console omgeving dus aan te passen als je niet met een console werkt naar iets gelijkaardigs.

Heb je eerst leren programmeren in c++? Groeten.

Berichten: 43

Re: [java] probleem met input

De Inputklasse is door mijn leraar ter beschikking gesteld in de vorm van een voorgemaakt bestand, dat ik dan vervolgens ingevoerd heb in JCreator, dus wss is het normaal dat jij hierbij een foutmelding krijgt, bij mij is dat uiteraard niet het geval en ook niet de oorzaak van het probleem denk ik.

Verder geen enkele ervaring met programmeren...

Berichten: 7.068

Re: [java] probleem met input

Print de variabele 'keuze' elke keer als je hem gezet hebt (door een nieuwe waarde in te lezen). Dat zie je in ieder geval wat er gebeurt en is het makkelijker om te debuggen (je zou natuurlijk ook met een debugger stap voor stap door je programma kunnen lopen...).

Berichten: 2.589

Re: [java] probleem met input

De Inputklasse is door mijn leraar ter beschikking gesteld in de vorm van een voorgemaakt bestand, dat ik dan vervolgens ingevoerd heb in JCreator, dus wss is het normaal dat jij hierbij een foutmelding krijgt, bij mij is dat uiteraard niet het geval en ook niet de oorzaak van het probleem denk ik.

Verder geen enkele ervaring met programmeren...
Ja oké lijkt me logisch dat, dat hier dan een fout geef alhoewel ik dacht dat het een standaard class is. deze: com.sun.corba.se.spi.orbutil.fsm.Input

Maar goed de fout zit hem waarschijnelijk in die input en daar kan ik u niet mee helpen, zeker niet als ik dat bestand niet heb.

Reageer