// Importer cs1.keyboard // Definere en klasse "afstemning"
public static void main (String[] args)
{
int total = 0, ja = 0, ingen = 0, vedikke = 0, resultat = 0, Afslut = 0; / Erklær variablerne.
// ja, nej og ved ikke er stemmer // resultat er når man er færdig med at indtaste stemmerne // afslut er når man vil afslutte programmer // fejl er hvis man indtaster forkert tegn
String memory; // den gemmer indtastningerne på keybordet
class menu() //prøver at gemme menuen som class ved ikke helt om det er rigtigt. { System.out.println(); System.out.println("****************************************************************************"); System.out.println("* Afstemningsprogram *"); System.out.println("****************************************************************************"); System.out.println(); System.out.println(); System.out.println("****************************************************************************"); System.out.println("*Kære medlem, du skal bestemme om foreningen skal nedlægges eller forsætte.*"); System.out.println("*Som du ved, så har foreningen interne problemer, som på længere sigt vil *"); System.out.println("*resultere i nedlæggelse af foreningen *"); System.out.println("****************************************************************************"); System.out.println(); System.out.println("************ Hvad vil du stemme? - for eller imod! *********************"); System.out.println(); System.out.println(); System.out.println("****************************************************************************"); System.out.println("* Du har følgende svar muligheder: *"); System.out.println("* Hvis ja, så indtast J *"); System.out.println("* Hvis nej, så indtast N *"); System.out.println("* Hvis ved ikke, så indtast V *"); System.out.println("* For at se resultatet skal du indtaste R for resultat. *"); System.out.println("****************************************************************************");
}
//**************************** stemme optælling ved "Q"************************** // If-statement. Udfører den kode der er knyttet til de forskellige kommandoer. // Hvis den ønskede kommando er Q, så afslut programmet
//************************* JA, stemmen tilføjes her ******************** // Hvis den ønskede kommando er J, så tilføj 1 til både de optalte Ja-stemmer // og de totale optalte stemmer
else if (memory.compareToIgnoreCase("J") == 0 )
{
ja++; total++; System.out.println("(Tak for stemmen)");
//********************* NEJ, stemmen tilføjes her ******************** // Hvis den ønskede kommando er N, så tilføj 1 til både de optalte Nej-stemmer // og de totale optalte stemmer
else if (memory.compareToIgnoreCase("N") == 0 )
{
nej++; total++; System.out.println("(Tak for stemmen)");
// Når alle stemmer er optalt (Brugeren har valgt X som kommando), så udskriv resultatet af // afstemningen. Der udskrives de totale optalte stemmer, de forskellige optalte stemmer // og hvor stor en % de forskellige optalte stemmer udgør af de totale optalte stemmer.
{
System.out.println(); System.out.println(); System.out.println(); System.out.println(); System.out.println("***********************************Resultatet************************************"); System.out.println("* *"); System.out.println("* Ja stemmer : " + ja + " ( + ((long) ja / total) * 100 + %) *"); System.out.println("* Nej stemmer : " + nej + " ( + ((long) nej / total) * 100 + %) *"); System.out.println("* Ved ikke stemmer : " + vedikke + " ( + ((long) vedikke / total) * 100 + %) *"); System.out.println("* Totale stemmer : " + total + " ( + ((long) total / total) * 100 + %) *"); System.out.println("* *"); System.out.println("*********************************************************************************"); System.out.println(); System.out.println(); }
kan i hjælpe mig med at løse opgaven....jeg sidder simpelthen fast her. Kan ikke se hvilken fejl jeg måtte lave. Sikkert mange, for det er min første opgave i Java.
Hvis du ikke siger hvad du få af fejl tror jeg ikke vi kan hjælp. Men linien System.out.println(""Følgende tegn `" memory + "` er forkert , prøv igen:"); skal nok være System.out.println(""Følgende tegn `" + memory + "` er forkert , prøv igen:");
C:\java\afstemning1.java:23: illegal start of expression int total = 0, ja = 0, ingen = 0, vedikke = 0, resultat = 0, Afslut = 0; / Erklær variablerne. ^ C:\java\afstemning1.java:36: '{' expected class menu() //prøver at gemme menuen som class ved ikke helt om det er rigtigt. ^ C:\java\afstemning1.java:162: '{' expected class menu(); ^ C:\java\afstemning1.java:164: <identifier> expected System.out.println(); ^ C:\java\afstemning1.java:165: <identifier> expected System.out.println(); ^ C:\java\afstemning1.java:166: <identifier> expected System.out.println("Følgende tegn `" + memory + "` er forkert , prøv igen:"); ^ C:\java\afstemning1.java:205: '}' expected } ^ C:\java\afstemning1.java:3: class afstemning is public, should be declared in a file named afstemning.java public class afstemning ^ C:\java\afstemning1.java:162: menu is already defined in main(java.lang.String[]) class menu(); ^ C:\java\afstemning1.java:164: cannot resolve symbol symbol : class out location: class java.lang.System System.out.println(); ^ C:\java\afstemning1.java:165: cannot resolve symbol symbol : class out location: class java.lang.System System.out.println(); ^ C:\java\afstemning1.java:166: cannot resolve symbol symbol : class out location: class java.lang.System System.out.println("Følgende tegn `" + memory + "` er forkert , prøv igen:"); ^ C:\java\afstemning1.java:193: local variable ja is accessed from within inner class; needs to be declared final System.out.println("* Ja stemmer : " + ja + " ( + ((long) ja / total) * 100 + %) *"); ^ C:\java\afstemning1.java:194: cannot resolve symbol symbol : variable nej location: class menu System.out.println("* Nej stemmer : " + nej + " ( + ((long) nej / total) * 100 + %) *"); ^ C:\java\afstemning1.java:195: local variable vedikke is accessed from within inner class; needs to be declared final System.out.println("* Ved ikke stemmer : " + vedikke + " ( + ((long) vedikke / total) * 100 + %) *"); ^ C:\java\afstemning1.java:196: local variable total is accessed from within inner class; needs to be declared final System.out.println("* Totale stemmer : " + total + " ( + ((long) total / total) * 100 + %) *"); ^ 16 errors
C:\java\afstemning1.java:43: '{' expected class menu() //prøver at gemme menuen som class ved ikke helt om det er rigtigt. ^ C:\java\afstemning1.java:169: '{' expected class menu(); ^ C:\java\afstemning1.java:171: <identifier> expected System.out.println(); ^ C:\java\afstemning1.java:172: <identifier> expected System.out.println(); ^ C:\java\afstemning1.java:173: <identifier> expected System.out.println("Følgende tegn `" + memory + "` er forkert , prøv igen:"); ^ C:\java\afstemning1.java:212: '}' expected } ^ C:\java\afstemning1.java:169: menu is already defined in main(java.lang.String[]) class menu(); ^ C:\java\afstemning1.java:171: cannot resolve symbol symbol : class out location: class java.lang.System System.out.println(); ^ C:\java\afstemning1.java:172: cannot resolve symbol symbol : class out location: class java.lang.System System.out.println(); ^ C:\java\afstemning1.java:173: cannot resolve symbol symbol : class out location: class java.lang.System System.out.println("Følgende tegn `" + memory + "` er forkert , prøv igen:"); ^ C:\java\afstemning1.java:200: local variable ja is accessed from within inner class; needs to be declared final System.out.println("* Ja stemmer : " + ja + " ( + ((long) ja / total) * 100 + %) *"); ^ C:\java\afstemning1.java:201: cannot resolve symbol symbol : variable nej location: class menu System.out.println("* Nej stemmer : " + nej + " ( + ((long) nej / total) * 100 + %) *"); ^ C:\java\afstemning1.java:202: local variable vedikke is accessed from within inner class; needs to be declared final System.out.println("* Ved ikke stemmer : " + vedikke + " ( + ((long) vedikke / total) * 100 + %) *"); ^ C:\java\afstemning1.java:203: local variable total is accessed from within inner class; needs to be declared final System.out.println("* Totale stemmer : " + total + " ( + ((long) total / total) * 100 + %) *"); ^ 14 errors
hvad skal jeg så lave istedet :-) Jeg har faktisk kun brugt 12 timer på at sætte mig ind i JAVA. Så jeg sidder og kæmper mig med at forstå sammenhængen.
Jeg har arbejdet mere med html, grafik, css. Og når jeg laver Class, er det på baggrund af at jeg kender det fra CSS.
du har brug for lidt (meget) struktur i din klasse. Et godt trick er at få lidt til at virke 100% og bygge videre på det til du har opnået det du gerne vil, eks:
import cs1.Keyboard;
public class Afstemning //klassenavne bør (skal) være med stort { public static void main(String args[]) { System.out.println("****afsteminig****"); //vis valgmuligheder //hent input fra brugeren // handl på baggrund af input fra brugeren } }
Jeg tror han kunne have lært noget ved at følge den undervisning, der ligger forud for denne opgave. Undskyld på forhånd hvis min antagelse er forkert, men har du, convinius, ikke haft Java i "skolen" i en måneds tid, og nu, hvor du skal afleverer en opgave, begynder du at kigge på det. Jeg synes du tager alvorligt pis på den lærer, der har forberedt og gennemført en undervisning, der skulle gøre dig i stand til at løse denne opgave - og som du totalt har ignoreret.
faktisk er det selvstudie...forlæsningerne har ikke så meget med koder at gøre. Men mere binær tal og computerens opbygning. Vi har dog øvelses timerne som vi laver lidt i. Og jeg har nu fulgt rimelig godt med.....
umiddelbart ser det ud som om du benytter "big bang" strategien når du laver din kode - det dur ikke!, lav hellere "edit->compile->run" masser af gange så du ikke mister overblikket.
hihi big-bang. Ja lige nu ser det meget big-bang ud i min hjerne. Vi har ikke lært så meget igen. Og jeg er sikker på..eller jeg har fundet ud af at der er en lettere måde at lave den på. En måde som vi har genemgnået.
Den måde jeg laver den på, er næsten som dengang jeg programeret i C++. Jeg måtte bare lige ændre nogen ting. Men selv c++ har jeg glemt med tiden desværre.
men nu vil jeg lave den på den måde her...vil ikke rigtig starte forfra.
Jeg synes du skulle give Keyboard klassen kuglen. Nu. Du kan ligeså vende dig af med den bekvemmelighed og bruge System.in. Keyboard er en 'customized' klasse til bogen Lewis&&Loftus og ikke i gængs brug.
her er en model, med den der indre klasse som du vil have og uden brug af Keyboard klassen import java.io.*; public class Afstemning { // stort bogstav!!
// erklær fields (class scope)
public Afstemning() {}
public static void main (String[] args) { int total = 0; int ja = 0; int nej = 0; int vedikke = 0; char temp; boolean run = true;
// Når alle stemmer er optalt (Brugeren har valgt X som kommando), så udskriv resultatet af // afstemningen. Der udskrives de totale optalte stemmer, de forskellige optalte stemmer // og hvor stor en % de forskellige optalte stemmer udgør af de totale optalte stemmer.
{
System.out.println(); System.out.println(); System.out.println(); System.out.println(); System.out.println("***********************************Resultatet************************************"); System.out.println("* *"); System.out.println("* Ja stemmer : " + ja + " (" + ((float) ja / total) * 100 + "%) *"); System.out.println("* Nej stemmer : " + nej + " (" + ((float) nej / total) * 100 + "%) *"); System.out.println("* Ved ikke stemmer : " + vedikke + " (" + ((float) vedikke / total) * 100 + "%) *"); System.out.println("* Totale stemmer : " + total + " (" + ((float) total / total) * 100 + "%) *"); System.out.println("* *"); System.out.println("*********************************************************************************"); System.out.println(); System.out.println(); } }
private static class Menu { // Erklær indre klasse private. skal kun have scope i Afstemning. Uden for main
public Menu() {}
public static void parseOut(PrintStream out) { out.println(); out.println("****************************************************************************"); out.println("* Afstemningsprogram *"); out.println("****************************************************************************"); out.println(); out.println(); out.println("****************************************************************************"); out.println("*Kære medlem, du skal bestemme om foreningen skal nedlægges eller forsætte.*"); out.println("*Som du ved, så har foreningen interne problemer, som på længere sigt vil *"); out.println("*resultere i nedlæggelse af foreningen *"); out.println("****************************************************************************"); out.println(); out.println("************ Hvad vil du stemme? - for eller imod! *********************"); out.println(); out.println(); out.println("****************************************************************************"); out.println("* Du har følgende svar muligheder: *"); out.println("* Hvis ja, så indtast J *"); out.println("* Hvis nej, så indtast N *"); out.println("* Hvis ved ikke, så indtast V *"); out.println("* For at se resultatet skal du indtaste R for resultat. *"); out.println("****************************************************************************"); }
public static char getInput(InputStream in) throws IOException { // vi behøver kun at læse det første tegn return (char)in.read(); } // Ret meningsløs klasse !!!!!! } }
// Importer cs1.keyboard // Definere en klasse "afstemning"
public static void main (String[] args)
{
int total = 0; int ja = 0; int nej = 0; int vedikke = 0; int resultat = 0; boolean afslut = true;
// Erklær variablerne. // ja, nej og vedikke er stemmer // resultat er når man er færdig med at indtaste stemmerne // afslut er når man vil afslutte programmer
int memory =0; // den gemmer indtastningerne på keybordet
while (memory !=4) {
//**************************** menu start **************************
System.out.println(); System.out.println("****************************************************************************"); System.out.println("* Afstemningsprogram *"); System.out.println("****************************************************************************"); System.out.println(); System.out.println(); System.out.println("****************************************************************************"); System.out.println("*Kære medlem, du skal bestemme om foreningen skal nedlægges eller forsætte.*"); System.out.println("*Som du ved, så har foreningen interne problemer, som på længere sigt vil *"); System.out.println("*resultere i nedlæggelse af foreningen *"); System.out.println("****************************************************************************"); System.out.println(); System.out.println("************ Hvad vil du stemme? - for eller imod! *********************"); System.out.println(); System.out.println(); System.out.println("****************************************************************************"); System.out.println("* Du har følgende svar muligheder: *"); System.out.println("* Hvis ja, så indtast 1 *"); System.out.println("* Hvis nej, så indtast 2 *"); System.out.println("* Hvis ved ikke, så indtast 3 *"); System.out.println("* For at se resultatet og afslutte skal du indtaste 4. *"); System.out.println("****************************************************************************");
//**************************** menu slut **************************
memory = Keyboard.readInt(); //
//**************************** stemme optælling ved "Q"************************** // If-statement. Udfører den kode der er knyttet til de forskellige kommandoer. // Hvis den ønskede kommando er Q, så afslut programmet
//************************* JA, stemmen tilføjes her ******************** // Hvis man intaster J, så adderes en værdien til Ja-stemmerne og en til de totale stemmer.
case 1:
{
ja++; total++; System.out.println("(Tak for stemmen)");
//********************* NEJ, stemmen tilføjes her ******************** // Hvis man intaster N, så adderes en værdien til Nej-stemmerne og en til de totale stemmer.
case 2:
{
nej++; total++; System.out.println("(Tak for stemmen)");
//******************* Ved ikke stemmen tilføjes her *********************** // Hvis man intaster V, så adderes en værdien til vedikke-stemmerne og en til de totale stemmer.
case 3:
{
vedikke++; total++; System.out.println("(Tak for stemmen)");
hvorfor vil den ikke outprinte "angiv din stemme eller tak for stemmen" try { while (run) { System.out.println("Angiv din stemme"); //hvorfor vil den her ikke blive vist temp = (char)System.in.read(); switch (temp) { case('j'): case('J'): //hvis j eller J sæt ja og total en op ja++;total++; System.out.println("tak for stemmen"); break; case('n'): case('N'): //hvis n eller N sæt nej og total en op nej++;total++; break; case('v'): case('V'): //hvis v eller V sæt vedikke og total en op vedikke++;total++; break; case('r'): case('R'): //hvis r eller R stop tælling (run=false) run = false; break; }
Ok. Jeg siger det lige igen. Det er IKKE smart at bruge Keyboard klassen. INGEN andre gør det. Brug dog System.in til at læse fra keyboardet som alle andre. Vi havde også denne bog til undervisning, og vi fik den besked i første forelæsning. Jeg kan godt forstå at du gerne vil selv, men du har altså fået kode der er kørt og testet og som virker.
run er true fra starten, således den kan starter løkken og forsætter med at læse tastetryk indtil der trykkes r. herefter afbrydes løkken og der tælles ikke flere tastetryk.
En af de fejl mange nybegyndere laver, er at bruge "vandfaldsmetoden". Dvs. man starter bare fra en ende af og laver alt i en klasse og en metode. Det går kun nedad (koden udføres oppefra og ned), ikke opad). Deraf navnet, da man normalt kun bevæger sig nedad et vandfald!
Jeg kan se at koden er blevet bedre, men I har (convinius har) problemer med at få det til at køre.
Jeg har derfor selv kigget lidt på koden, og ændret en del. Jeg kan få det til at køre nu. convinius jeg gider ikke paste det her, det fylder sgu så meget, men hent Afstemning.java her: www.cyberplaze.dk/Afstemning.java
Ved ikke lige hvordan jeg laver url's her endnu, men det kommer vel.
Hvis du ellers har kommentarer til løsningen, så spørg blot. Så vidt jeg har gættet mig til, skal afstemningen fortsætte, indtil man ønsker at se resultatet (r), så sådan fungerer det.
Med hensyn til fejl, så kan man nemt undgå en masse af dem, med et godt udviklingsværktøj. Jeg bruger selv JBuilder fra Borland. Nyeste version (7) findes i en gratis Personal Edition. JBuilder udfører on-the-fly grammatik kontrol ligesom Word, så man glemmer i {,},; og sådan. Man kan naturligvis få hjælp til at se hvad en metode skal modtage af attributter, hvad metoden returnerer, hvilke metoder der er tilgængelige på en klasse osv. Eneste minus er, at det er lidt tungt at arbejde med, hvis ens computer er langsom. Man bør mindst have 400 Mhz og godt med ram (helst 128 eller mere)...
programmet er sådan set 'lille' nok til at retfærdiggøre lineær programmering. ellers ligner det seneste det jeg postede 03/10/00:42 med den undtagelse at metoderne ikke er samlet i en indre statisk klasse. jeg vil egentlig fraråde smarte editorer når man er n00b. det er bedre at lære gode vaner end luxus fordi man samtidig skal bruge tænke-musklen.
jeg kan se at du (convicus) på et plan tænker klasser i CSS forstand. det er ikke specielt heldigt. du skal tænke på klasser som objekter i stedet. et objekt er lidt svær at begribe umiddelbart, men tænk på det som en abstraktion af en selvstændigt delmængde af programmet med tilhørende funktionalitet. I dette tilfælde vil jeg henføre til side 177 i den bog du har liggende foran dig.
Haha, jada, jeg har jo ikke skrevet et nyt program, så kernelementerne er der naturligvis stadigvæk ... men nu burde det kunne køre uden problemer efter at være compilet.
"Smarte editorer" ... jeg tror vi har lidt forskellige syn på det :D Hvorfor gå fra Århus til København, når man kan tage toget ??? JBuilder kan jo altså ikke brygge kaffe og ordene regnskabet for dig. Du skal stadig kunne programmerer. Forskellen er, at JBuilder lader dig gøre det hurtigere, samt du slipper for at skulle compile, rette, compile, rette compile ... osv i en udendelighed indtil alle fejl er væk. JBuilder hjælper dig med at løse dem on-the-fly mens du skriver. Og så laver JBuilder en masse abe arbejde for dig (læs: trivielt og monotont arbejde, selv en amøbe kunne finde ud af). Ting som, farvet tekst (sort=kode, grøn=kommentar osv, hvilket øger læsbarheden), automatisk indryk, automatisk indsættelse af sluttuborg efter starttuborg mm. Ved godt andre programmer kan det samme, og påstår ikke at JBuilder er det bedste.
muligvis en kikset pointe - muligvis fordi det er en kikset analogi.. :-)
Jeg synes ikke om at man som nybegynder bør sætte sig ned med sit forkromede IDE og lade den gøre alt det grove arbejde. Når man har lært sproget kan man effektivisere kodeskrivningen ved hjælp af diverse IDE faciliteter - men ikke før. Det er først "trivielt og monotont arbejde, selv en amøbe kunne finde ud af" når man har erfaringen der gør at man har overblikket til at sige at >>dette må kunne effektiviseres<<.
woow sikke mange indlæg. Tak for dem.........ja ...hmm at jeg tænker i forkerte baner, eller i cases. Det kan godt være. Jeg har som sagt ikke lavet mange programme igen. kun lit i c++ og er lige startet på JAVA.
Nu skal vi egentlig kun lige kunne støbe et program sammen, selvom det for mig kan være svært. Men det drejer sig jo bare om at begynde fra den ene ende af. - Men det ser ud til at jeg IKKE skal arbejde "nedad" som et vandfald. Men som en forvirret nybegynder, som bare splasker koder på et stykke papir først eller på et notepad dokument. Når vi til januasr skal til eksamen i det, skal vi ikke bruge computere. Vi skal skrive koden ind på et stykke papir, og det skræmmer mig....!!
Men sådan bliver det, og så må man are vende sig til det.
Nå men mange og 1000 tak for hjælpen. Og Erik, jeg håber ikke at du stadig er provokeret. Det var der ikke helt grund til, men folk har jo lov til at slippe lidt aggressioner ud, engang imellem.
Endnu engang tak for hjælpen. Grunden til jeg stiller et spørgsmål til eksperten.dk er nok fordi jeg godt kan lide at høre de mange muligheder man kan lave programmet i. Faktisk så har jeg nu indsigt i 3 måder man kan løse opgaven på. Hvis jeg bare sad med det selv,havde jeg lige lavet en version. Men det har da været noget af en opgave. Jeg sov nemlig klokken 4 nat. Men fik som sagt lavet 3 versioner.......
Håber da snart vi ses, vi får nu et program for om ugen. Så det glæder jeg mig til at arbejde med.
jeg har selv været til eksamen i objekt orienteret programmering (med java) hvor jeg selv valgte at skrive i hånden - på den måde fokuserede jeg på koden og ikke layoutet af koden. :-)
Ved ikke om nogen har sagt det meeen: int total = 0, ja = 0, ingen = 0, vedikke = 0, resultat = 0, Afslut = 0; / Erklær variablerne.
~~~~>
int total = 0, ja = 0, ingen = 0, vedikke = 0, resultat = 0, Afslut = 0; // Erklær variablerne.
Hehe :P
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.