techn9e Skrevet 4. september 2011 Del Skrevet 4. september 2011 Hei, kunne noen gi tips eller starthjelp for noen av disse oppgavene? Jeg har sittet fast lenge nå. Takk! Tilføy (deklarer) tre ekstra datafelt, et for kursets kurskode, et for antall studiepoeng og et for navnet på kursets faglærer. Skriv en konstruktør som gir startverdier til ALLE datafeltene i klassen. Konstruktøren skal ha fire parametre, (en for kursnavnet, en for kurskoden, en for antall studiepoeng og en for navnet på faglærer) Tilføy set- og get-metoder for de nye datafeltene. Modifiser visTittel-metoden slik at også kurskoden, antall studiepoeng og navnet på fagelærer for kurset skrives ut i dialogvinduet. Fordel utskriften over flere linjer. Her er koden: import javax.swing.JOptionPane; public class Kursbok4 { private String kursnavn; // Konstruktør som initialiserer datafeltet kursnavn. public Kursbok4( String n ) { kursnavn = n; } public void setKursnavn( String navn ) { kursnavn = navn; } public String getKursnavn() { return kursnavn; } public void visTittel() { JOptionPane.showMessageDialog( null, "Kursbok for " + kursnavn ); } } Og: import javax.swing.JOptionPane; public class Kursboktest4 { public static void main( String[] args ) { Kursbok4 bok1 = null, bok2 = null; // Leser inn et kursnavn: String navn = JOptionPane.showInputDialog( "Skriv kursnavn:" ); bok1 = new Kursbok4( navn ); // oppretter objekt med innlest kursnavn int svar = JOptionPane.showOptionDialog( null, "Vil du opprette en kursbok til?", "Opprette flere kursbøker?", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, null ); if ( svar == JOptionPane.YES_OPTION ) { // Leser inn kursnavn: navn = JOptionPane.showInputDialog("Skriv kursnavn:"); bok2 = new Kursbok4(navn); } // Viser kursnavn for opprettede kursbøker: String info = "Har opprettet kursbøker for følgende fag:\n"; info = info + bok1.getKursnavn(); if ( bok2 != null ) info = info + "\n" + bok2.getKursnavn(); JOptionPane.showMessageDialog( null, info, "Registrert kursnavn", JOptionPane.PLAIN_MESSAGE ); } } Lenke til kommentar
torbjørn marø Skrevet 4. september 2011 Del Skrevet 4. september 2011 Hei, kunne noen gi tips eller starthjelp for noen av disse oppgavene? Skal gjøre et forsøk... Tilføy (deklarer) tre ekstra datafelt, et for kursets kurskode, et for antall studiepoeng og et for navnet på kursets faglærer. private String kursnavn; er et eksempel på et datafelt fra koden du postet. Private betyr at feltet kun er synlig inne i klassen, String betyr at det dreier seg om et tekstfelt, og kursnavn er navnet på feltet. Deklarasjonen avsluttes med semikolon. Klarer du tre til...? Skriv en konstruktør som gir startverdier til ALLE datafeltene i klassen. public Kursbok4( String n ) { kursnavn = n; } Denne konstruktøren har kun en parameter (String n), og setter kun ett datafelt (kursnavn). Du må legge til litt her... Separer parametre med komma. Tilføy set- og get-metoder for de nye datafeltene. Se på setKursnavn og getKursnavn. Du må lage tilsvarende metoder for de nye variablene - altså 6 nye metoder. Modifiser visTittel-metoden slik at også kurskoden, antall studiepoeng og navnet på fagelærer for kurset skrives ut i dialogvinduet. Fordel utskriften over flere linjer. Her gjelder det å legge til mer tekst i linjen JOptionPane.showMessageDialog( null, "Kursbok for " + kursnavn ); Du får prøve å plusse på de nye variablene og få det til å se fint ut. Linjeskift skrives \n, så en streng som avsluttes med et linjeskift ser slik ut: "hello.\n". 1 Lenke til kommentar
techn9e Skrevet 4. september 2011 Forfatter Del Skrevet 4. september 2011 Tusen takk! Så bra kunne det forklares, jeg er nesten ferdig med oppgaven nå og tror jeg skjønte alt. Før jeg leste det du skrev virket oppgaven helt umulig! Lenke til kommentar
torbjørn marø Skrevet 4. september 2011 Del Skrevet 4. september 2011 Bare hyggelig! Råder deg til å fortsette å gjøre oppgaver, og når du går tom for oppgaver så lager du deg dine egne oppgaver. Det er én måte å bli god til å programmere på, og det er å trene, trene og atter trene. 1 Lenke til kommentar
techn9e Skrevet 4. september 2011 Forfatter Del Skrevet 4. september 2011 (endret) Hei, takk for tips, det skal jeg gjøre! jeg får en problem i hovedprogrammet, har prøvd å fikse dette i en time. Har skrevet erroren nederst. Kan du hjelpe med å fikse det? import javax.swing.JOptionPane; public class Kursboktest4 { public static void main( String[] args ) { Kursbok4 bok1 = null, bok2 = null; // Leser inn et kursnavn: String navn = JOptionPane.showInputDialog( "Skriv kursnavn:" ); bok1 = new Kursbok4( navn ); // oppretter objekt med innlest kursnavn int svar = JOptionPane.showOptionDialog( null, "Vil du opprette en kursbok til?", "Opprette flere kursbøker?", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, null ); if ( svar == JOptionPane.YES_OPTION ) { // Leser inn kursnavn: navn = JOptionPane.showInputDialog("Skriv kursnavn:"); bok2 = new Kursbok4(navn); } // Viser kursnavn for opprettede kursbøker: String info = "Har opprettet kursbøker for følgende fag:\n"; info = info + bok1.getKursnavn(); if ( bok2 != null ) info = info + "\n" + bok2.getKursnavn(); JOptionPane.showMessageDialog( null, info, "Registrert kursnavn", JOptionPane.PLAIN_MESSAGE ); } } Error: Kursboktest4.java:11: cannot find symbol symbol : constructor Kursbok4(java.lang.String) location: class Kursbok4 bok1 = new Kursbok4( navn ); // oppretter objekt med innlest kursnavn ^ Kursboktest4.java:21: cannot find symbol symbol : constructor Kursbok4(java.lang.String) location: class Kursbok4 bok2 = new Kursbok4(navn); ^ 2 errors Endret 4. september 2011 av techn9e Lenke til kommentar
torbjørn marø Skrevet 4. september 2011 Del Skrevet 4. september 2011 bok1 = new Kursbok4( navn ); // oppretter objekt med innlest kursnavn Her kaller du en konstruktør som tar ett argument (navnet). Jeg tipper du ikke har en slik konstruktør lengre, fordi du har lagt til flere parametre (kurskode, studiepong, faglærer). cannot find symbol symbol : constructor Kursbok4(java.lang.String) Compilatoren finner altså ikke en konstruktør som heter Kursbok4 og tar ett String-argument. Du må altså endre koden din til å kalle den nye konstruktøren. 1 Lenke til kommentar
techn9e Skrevet 4. september 2011 Forfatter Del Skrevet 4. september 2011 (endret) Hei, hvis jeg endrer Kursbok4 sånn får jeg error: Kode: Endret 4. september 2011 av techn9e Lenke til kommentar
torbjørn marø Skrevet 4. september 2011 Del Skrevet 4. september 2011 bok1 = new Kursbok4(navn, kode, poeng, lærer ); // oppretter objekt med innlest kursnavn Nå ser kallet til konstruktøren riktig ut, men de tre variablene du har lagt til er ikke definert noe sted. navn har jo fått en verdi fra brukeren: String navn = JOptionPane.showInputDialog( "Skriv kursnavn:" ); Du må gjøre noe lignende for de øvrige variablene. Lenke til kommentar
evilnrj Skrevet 6. september 2011 Del Skrevet 6. september 2011 Når jeg prøver å kalle bok1.visTittel() får jeg erroren "Kursboktest4.java:33: error: 'void' type not allowed here info = info + bok1.visTittel(); " er det meningen at vi skal kalle på en og en metode i info på slutten? bok1.getKurskode(), bok1.getStudiepoeng() og bok1.getFaglærer() funker jo, men hadde vært bedre å bare kalt på visTittel :s Lenke til kommentar
evilnrj Skrevet 6. september 2011 Del Skrevet 6. september 2011 Fant det ut! måtte kalle på metoden for seg selv <3 aaaaah, programmering er som matte, er så utrolig digg når man endelig får det til Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå