Gå til innhold

Anbefalte innlegg

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
Videoannonse
Annonse

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".

  • Liker 1
Lenke til kommentar

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 av techn9e
Lenke til kommentar

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.

  • Liker 1
Lenke til kommentar

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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...