Gå til innhold

[Løst] java oppgave - klasser og objekter


Anbefalte innlegg

For og si det mildt har jeg ikke peiling på hvordan jeg skal løse denne oppgava. Rett og slett fordi jeg ikke kan nok java, trenger ingen moralpreken for at jeg ikke har fulgt med akkurat. Men jeg gir det et forsøk, er det noen som kan prøve og gi meg en forklaring på hvordan jeg skal starte?

 

"Skriv klassen Bok der objektene (minst) skal inneholde tittel, forfatter og utgivelses-år. Du kan selv velge om du vil ha med flere objektvariabler. Objektene skal ha en metode for å kunne vise fram innholdet i alle sine objektvariabler (toString-metode) og en for å kunne sammenligne objekt (erLik-metode). Skriv inn minst to konstruktører (overload) i klassen, en som håndterer verdier til alle objektvariablene og en som tillater at det mangler en opplysning (velg selv hvilken) for en bok.

Skriv også et testprogram som oppretter minst 5 bøker (bare opprett bøkene direkte i programkoden, og ikke etter innlesing fra brukeren). Skriv ut alle bøkene slik de er registrert og deretter alle (alfabetisk) sortert etter tittel. Les inn en ny bok fra brukeren, og legg den i lista dersom denne boken ikke finnes der fra før. Skriv til slutt ut ei liste med alle de bøkene som er utgitt på et årstall innlest fra brukeren."

Lenke til kommentar
Videoannonse
Annonse

Takk for det, hjalp meg veldig mye! Har nå fulgt guiden ferdig og tilpasset det litt til oppgava. Har nå 2 java filer, "Bok.java" og "BokOppslag.java" og får ingen feil når jeg kompilerer. Men sliter med siste delen av oppgaven hvor brukeren skal kunne legge inn en ny bok.

 

"Skriv ut alle bøkene slik de er registrert og deretter alle (alfabetisk) sortert etter tittel. Les inn en ny bok fra brukeren, og legg den i lista dersom denne boken ikke finnes der fra før. Skriv til slutt ut ei liste med alle de bøkene som er utgitt på et årstall innlest fra brukeren.

 

Har prøvd et par forskjellige metoder, men får det ikke til og fungere. Noen som har et tips?

 

Bok.java kode

public class Bok {
   //Felter
   private String tittel;
   private String forfatter;
   private String utgitt;
   //Konstruksjon
   public Bok(String bokTittel, String forfatterNavn, String utgittDato)
   {
  //Fyll ut feltene
  tittel = bokTittel;
  forfatter = forfatterNavn;
  utgitt = utgittDato;
   }
   public void displayBookData()
   {
  System.out.println("Tittel: " + tittel);
  System.out.println("Forfatter: " + forfatter);
  System.out.println("Utgittdato: " + utgitt);
   }
}

 

BokOppslag.java kode

public class BokOppslag {
   public static void main(String[] args) {
  Bok boknr1 = new Bok("Flink pike","Gillian Flynn","2013");
  Bok boknr2 = new Bok("Sandmannen","Lars Kepler","2011");
  Bok boknr3 = new Bok("Marco-effekten","Jussi Adler-Olsen","2012");
  Bok boknr4 = new Bok("Bitter seier","Alf R. Jacobsen","2010");
  Bok boknr5 = new Bok("Kronvitnet","Morten Frich","1999");
  boknr1.displayBookData();
  boknr2.displayBookData();
  boknr3.displayBookData();
  boknr4.displayBookData();
  boknr5.displayBookData();
   }
}

Endret av Roger.Holland
Lenke til kommentar

Takk for det, hjalp meg veldig mye! Har nå fulgt guiden ferdig og tilpasset det litt til oppgava. Har nå 2 java filer, "Bok.java" og "BokOppslag.java" og får ingen feil når jeg kompilerer. Men sliter med siste delen av oppgaven hvor brukeren skal kunne legge inn en ny bok.

 

"Skriv ut alle bøkene slik de er registrert og deretter alle (alfabetisk) sortert etter tittel. Les inn en ny bok fra brukeren, og legg den i lista dersom denne boken ikke finnes der fra før. Skriv til slutt ut ei liste med alle de bøkene som er utgitt på et årstall innlest fra brukeren.

 

Har prøvd et par forskjellige metoder, men får det ikke til og fungere. Noen som har et tips?

*masse kode her*

 

For å registrere bøker: Lag et ArrayList<Bok> objekt. Dette er en liste som kan holde på bøkene dine. For å putte dem inn, kan du bare skrive liste.add(bok). Sjekk dokumentasjonen på dette.

 

For å sortere bøkene, kan du bruke den innebygde Collections.sort(liste). For at Java skal vite hvordan en bok skal sorteres, må klassen Bok for eksempel implementere "Comparable". Les dokumentasjonen for dette interfacet også.

 

For å skrive dem ut, bruk en vanlig for-løkke. Lykke til.

Lenke til kommentar

Har laget et enkelt oppsett som viser deg framgangsmåten, du får legge til og endre etter behov.

 

Har laget klassen Bok:

 

    public class Bok {
   private String tittel;
   private String forfatter;
   private String utgitt;

   public Bok(String tittel, String forfatter, String utgitt){
    this.tittel = tittel;
    this.forfatter = forfatter;
    this.utgitt = utgitt;
   }

   public String getTittel(){
    return tittel;
   }

   public void setTittel(String nyTittel){
    tittel = nyTittel;
   }

   public String getForfatter(){
    return forfatter;
   }

   public void setForfatter(String nyForfatter){
    forfatter = nyForfatter;
   }

   public String getUtgitt(){
    return utgitt;
   }

   public void setUtgitt(String nyUtgitt){
    utgitt = nyUtgitt;
   }

   public String toString(){
    return getTittel() + getForfatter() + getUtgitt();
   }
}

 

Deretter klassen Metoder:

 

public class Metoder {
private ArrayList<Bok> boker = new ArrayList<Bok>();

public void registrerBok(String tittel, String forfatter, String utgitt){
	if(!(tittel == null && forfatter == null && utgitt == null)){
		boker.add(new Bok(tittel, forfatter, utgitt));
	} else {
		System.out.println("Verdiene var null");
	}
}

public void visRegistrerteBoker(){
	if(boker.size() > 0){
		for(int i = 0; i < boker.size(); i++){
			System.out.println("Boken med tittel: " + "'" + boker.get(i).getTittel() + "'" + ", er skrevet av forfatter: " + boker.get(i).getForfatter() + " og er utgitt år:" + boker.get(i).getUtgitt());
		}
	} else {
		System.out.println("Det er ingen boker registrert");
	}
}
}

 

Og en enkel test klasse som gjør at du kan registrere 4 bøker:

 

public class Test2 {
public static void main(String[] args) {
	Metoder metoder = new Metoder();

	for(int i = 0; i < 4; i++){ //Her kan du registrere 4 bøker
	String innTittel = JOptionPane.showInputDialog("Tittel:");
	String innForfatter = JOptionPane.showInputDialog("Forfatter:");
	String innUtgitt = JOptionPane.showInputDialog("utgitt:");
	String tittel = innTittel;
	String forfatter = innForfatter;
	String utgitt = innUtgitt;

	metoder.registrerBok(tittel, forfatter, utgitt);
	}

	metoder.visRegistrerteBoker();
}
}

 

La inn noen av bøkene som du hadde fra før og fikk utskriften:

 

Boken med tittel: 'Flink pike', er skrevet av forfatter: Gillian Flynn og er utgitt år:2013
Boken med tittel: 'Sandmannen', er skrevet av forfatter: Lars Kepler og er utgitt år:2011
Boken med tittel: 'Marco-effekten', er skrevet av forfatter: Jussi Adler-Olsen og er utgitt år:2012
Boken med tittel: 'Bitter seier', er skrevet av forfatter: Alf R. Jacobsen og er utgitt år:2010

Endret av cronbach alpha
Lenke til kommentar

Takk! Har prøvd og legge inn koden i 3 forskjellige java filer, men får ikke kompilert "Metoder" eller "Test2". Har vært borti dette før og da har det bare vært skrivefeil med class navnet, men finner ikke grunnen nå er sikkert bare noe småtteri men skal fortsette og jobbe med det imorra.

 

error fra Metoder.java

C:\Users\Roger\Desktop\Skole\Java\Nyeste_oblig\Metoder.java:2: error: cannot find symbol
	private ArrayList<Bok> boker = new ArrayList<Bok>();
			^
 symbol:   class ArrayList
 location: class Metoder
C:\Users\RogerDesktop\Skole\Java\Nyeste_oblig\Metoder.java:2: error: cannot find symbol
	private ArrayList<Bok> boker = new ArrayList<Bok>();
									   ^
 symbol:   class ArrayList
 location: class Metoder
2 errors
Tool completed with exit code 1

 

error fra Test2.java

.\Metoder.java:2: error: cannot find symbol
	private ArrayList<Bok> boker = new ArrayList<Bok>();
			^
 symbol:   class ArrayList
 location: class Metoder
C:\Users\Roger\Desktop\Skole\Java\Nyeste_oblig\Test2.java:6: error: cannot find symbol
			String innTittel = JOptionPane.showInputDialog("Tittel:");
							   ^
 symbol:   variable JOptionPane
 location: class Test2
C:\Users\Roger\Desktop\Skole\Java\Nyeste_oblig\Test2.java:7: error: cannot find symbol
			String innForfatter = JOptionPane.showInputDialog("Forfatter:");
								  ^
 symbol:   variable JOptionPane
 location: class Test2
C:\Users\Roger\Desktop\Skole\Java\Nyeste_oblig\Test2.java:8: error: cannot find symbol
			String innUtgitt = JOptionPane.showInputDialog("utgitt:");
							   ^
 symbol:   variable JOptionPane
 location: class Test2
.\Metoder.java:2: error: cannot find symbol
	private ArrayList<Bok> boker = new ArrayList<Bok>();
									   ^
 symbol:   class ArrayList
 location: class Metoder
5 errors
Tool completed with exit code 1

Endret av Roger.Holland
Lenke til kommentar

Oki, bruker du nettbeans? Kan være mangel av import package. Og ser at jeg ikke hadde med

 

import javax.swing.JOptionPane;

 

I klassen Test2, denne trengr du for å benytte deg av JOptionPane.

 

og

 

import java.util.ArrayList;

 

I klassen Metoder for å benytte deg av ArrayList.

 

Disse legger du utenfor public class Test2{}, og public class Metoder{}

Endret av cronbach alpha
Lenke til kommentar

Ah, det var ikke verre fikk det til nå. Bruker ikke netbeans nei har bare brukt textpad, er netbeans et bedre alternativ?

 

Netbeans og Eclipse(som jeg selv foretrekker) er langt bedre og byr på langt større hjelp. Men det er med god grunn at du som nybegynner sikkert har blitt anbefalt textpad, og det er fordi den ikke inneholder alle disse hjelpemidlene slik at du må finne ut ting selv og lære mer.

 

Spesielt hvis du har eksamen skriftlig i Java, er det nok greit å forsette å bruke textpad en god stund til, til det som er basic sitter.

  • Liker 1
Lenke til kommentar

Av en eller annen grunn starter veldig mange skole med å bruke textpad som start program for så å gå over til NetBeans eller Eclipse. Jeg vil anbefale deg å droppe textpad og starte med NetBeans eller Eclipse, jeg bruker selv begge, men havner som regel på NetBean. NetBeans og Eclipse er av samme kaliber, mer en smakssak over hvilken du velger.

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