Jeg er desperat, skal levere oppgave i dag og får jeg den ikke til så får jeg ikke gå opp til eksamen til jul. Og nå står jeg fast og foreleseren har tydeligvis tatt seg høstferie, for han er ikke å få tak i.
public Bibliotek(){
bokListe = new ArrayList();
}
private int finnBokPosisjon(String forfatter, String tittel){
int BokPosIndex = -1;
for(int i = 0; i < bokListe.size(); i++){
System.out.println("test om forfatter:"+forfatter+" og "+bokListe.get(i).visForfatter()+" er like");
System.out.println("test om tittel:"+tittel+" og "+bokListe.get(i).visTittel()+" er like");
if(bokListe.get(i).visForfatter().equalsIgnoreCase(forfatter)&& bokListe.get(i).visTittel().equalsIgnoreCase(tittel)){
BokPosIndex = i;
break; //antar at søket skal stoppe ved første treff
}
}
return BokPosIndex;
}
public int visAntallBoker(){
return bokListe.size();
}
public boolean leggTilBok(String forfatter,String tittel,int år, int antSider, String forlag){
boolean BokBleLagtTil = false;
if(finnBokPosisjon(forfatter, tittel) == -1){
Bok enBok = new Bok(forfatter, tittel, år, antSider, forlag);
bokListe.add(enBok);
BokBleLagtTil = true;
}
return BokBleLagtTil;
}
public Bok finnBok(String forfatter, String tittel){
Jeg er klar for dagens gode gjerning, men har bare 10-15 minutter til rådighet.
Det er vanskelig å hjelpe, når du ikke sier hva som er feil. Jeg fant ikke noe umiddelbart, men så mangler koden for både Bibliotek- og Bok-klassene. Sleng dem inn her, og beskriv feilene du får - dette er din egen tråd, trenger ikke spare plass. :)
public Bibliotek(){
bokListe = new ArrayList();
}
private int finnBokPosisjon(String forfatter, String tittel){
int BokPosIndex = -1;
for(int i = 0; i < bokListe.size(); i++){
System.out.println("test om forfatter:"+forfatter+" og "+bokListe.get(i).visForfatter()+" er like");
System.out.println("test om tittel:"+tittel+" og "+bokListe.get(i).visTittel()+" er like");
if(bokListe.get(i).visForfatter().equalsIgnoreCase(forfatter)&& bokListe.get(i).visTittel().equalsIgnoreCase(tittel)){
BokPosIndex = i;
break; //antar at søket skal stoppe ved første treff
}
}
return BokPosIndex;
}
public int visAntallBoker(){
return bokListe.size();
}
public boolean leggTilBok(String forfatter,String tittel,int år, int antSider, String forlag){
boolean BokBleLagtTil = false;
if(finnBokPosisjon(forfatter, tittel) == -1){
Bok enBok = new Bok(forfatter, tittel, år, antSider, forlag);
bokListe.add(enBok);
BokBleLagtTil = true;
}
return BokBleLagtTil;
}
public Bok finnBok(String forfatter, String tittel){
Det går her i hvert fall virker det som, men kan jo bytte det ut. Det er jo best uten. Har ikke tenkt over at jeg har brukt å engang, men ser det når du nevner det.
Først: koden slik du har limt den inn kompilerer ikke, pga en ufullstendig metode Test i klassen Bok:
og pga "titte l" helt i slutten av denne linjen:
En bok til legger du vel til med nok et kall til "leggTilBok"-metoden? Som f.eks:
Jeg rekker bare å gi noen generelle tilbakemeldinger:
* vurder å programmere på engelsk, det er det vanlige i bransjen.
* Bok, som er et rent dataobjekt, bør ha get- og set-metoder for alle attributtene. F.eks.:
* Du blir bedt om å lage metoder for å sammeligne forskjellig attributter for to bøker. Et eksempel på metode som sammenligner antall sider blir da:
Vurder å bruke en eller flere Hashtable - da er det lett å slå opp på attributter. Tydelig at oppgaven gjerne vil at du skal gjøre noe slikt.
Beklager at jeg må stikke, men skal prøve om jeg får mer tid senere i dag...
Uff, jeg har ingen editor/kompilator her jeg sitter, og det er selvsagt noen tastefeil og slikt. Dette er litt bedre, men har ikke sjekket med kompilasjon her heller:
// compares the number of pages of two Bok objects. Returns -1 if numPages of ab.
public int compareNumPages(Bok a, Bok b){
if (a.getNumPages()b.getNumPages()){
return 1;
}
// must be equal, return 0
return 0;
}
Uff, håper jeg har vært til hjelp og ikke til byrde. Rekker ikke hjelpe til mer, nå er det hyttetur. Sokk fruster over min manglende hjelp til pakking... *svosj*
public Bibliotek(){
bokListe = new ArrayList();
}
private int finnBokPosisjon(String forfatter, String tittel){
int BokPosIndex = -1;
for(int i = 0; i < bokListe.size(); i++){
//System.out.println("Test om forfatter:"+forfatter+" og "+bokListe.get(i) .visForfatter()+" er like");
//System.out.println("Test om tittel:"+tittel+" og "+bokListe.get(i) .visTittel()+" er like");
if(bokListe.get(i).visForfatter().equalsIgnoreCase(forfatter)&& bokListe.get(i).visTittel().equalsIgnoreCase(tittel)){
BokPosIndex = i;
break; //antar at søket skal stoppe ved første treff
}
}
return BokPosIndex;
}
public int visAntallBoker(){
return bokListe.size();
}
public boolean leggTilBok(String forfatter,String tittel,int år, int antSider, String forlag){
boolean BokBleLagtTil = false;
if(finnBokPosisjon(forfatter, tittel) == -1){
Bok enBok = new Bok(forfatter, tittel, år, antSider, forlag);
Bok toBok = new Bok(forfatter, tittel, år, antSider, forlag);
Bok treBok = new Bok(forfatter, tittel, år, antSider, forlag);
Equals er boolean, men det var ikke det oppgaven spurte etter, har jeg lest nå, selv om det er god praksis å implementere equals. Koden i innlegg 21 ser riktig ut, men det ser ut som at du mangler getNumPages() metoden i bokklassen?
Skal dette være en webapplikasjon, eller bare klasser og testprogram?
Nå ser koden slik ut(kjenner jeg begynner å bli nervøs):
Bok:
public class Bok {
private String tittel;
private String forfatter;
private int utgivelsesar;
private String forlag;
private int antallSider;
public int numPages;
public Bok(String tittel, String forfatter, int år, int antSider, String forlag){
this.tittel = tittel;
this.forfatter = forfatter;
endreUtgivelsesar(år);
endreAntSider(antSider);
this.forlag = forlag;
}
//--------------- metoder som returnerer verdier --------------
public String visTittel (){
return tittel;
}
public String visForfatter (){
return forfatter;
}
public int visUtgivelsesar (){
return utgivelsesar;
}
//dette er en mutasjonsmetode
public void setNumPages(int numOfPages){
numPages = numOfPages;
}
//dette er enn tilgangsmetode
public int getNumPages(){
return numPages;
}
//------------------- metoder som endrer på attributter ------------------------
public void endreUtgivelsesar(int ar) {
utgivelsesar = ar;
public int antallSider og public int numPages, de er vel like, så jeg kan sløyfe en. Har prøvd å bytte ut antallSider med numPages, men da blir det bare mer feil for meg.
Nå mangler jeg fortsatt getName i bokklassen, kan jeg skrive den slik?:
public String getName;
public void setGetName(String getName){
getName = getName;
}
public Bibliotek(){
bokListe = new ArrayList();
}
private int finnBokPosisjon(String forfatter, String tittel){
int BokPosIndex = -1;
for(int i = 0; i < bokListe.size(); i++){
//System.out.println("Test om forfatter:"+forfatter+" og "+bokListe.get(i) .visForfatter()+" er like");
//System.out.println("Test om tittel:"+tittel+" og "+bokListe.get(i) .visTittel()+" er like");
if(bokListe.get(i).visForfatter().equalsIgnoreCase(forfatter)&& bokListe.get(i).visTittel().equalsIgnoreCase(tittel)){
BokPosIndex = i;
break; //antar at søket skal stoppe ved første treff
}
}
return BokPosIndex;
}
public int visAntallBoker(){
return bokListe.size();
}
public boolean leggTilBok(String forfatter,String tittel,int ar, int antSider, String forlag){
boolean BokBleLagtTil = false;
if(finnBokPosisjon(forfatter, tittel) == -1){
Bok enBok = new Bok(forfatter, tittel, ar, antSider, forlag);
Bok toBok = new Bok(forfatter, tittel, ar, antSider, forlag);
Bok treBok = new Bok(forfatter, tittel, ar, antSider, forlag);
public int sammenlign(Bok enBok, Bok toBok){
int int1= enBok.getNumPages();
int int2= toBok.getNumPages();
if(int1int2){
System.out.println("Bok " + enBok.getName() + " er " +(int1-int2)+ " sider større bok " + toBok.getName());
}
else if(int1==int2){
System.out.println("De har like mange sider: "+int1);
}
return enBok;
}
}
siste del av koden i bibliotek skal ikke "return enBok" jeg vil jo at den skal returnere forskjellen mellom antall sider på bøkene. Eller?
Nå mister jeg motet.
Jeesses.. det var litt av et hopp ja. Syntes det var kjempevanskelig første gangen bare å forstå at man kunne hente ut ferdigklasser og bare skrive metoden osv. Hvordan det "henger sammen" da. Brukte en dag på bare det. :lol:
Vi er på obl nummer fire nå vel.. tror jeg.
Ser forresten av oppgaven refererer til en array. Har dere hatt om det?
Du skal ikke lage en array (tror jeg), regner med at du bare referer til den.
Det er jo bare en tabell med verdier liksom.. men syntes uansett at det er rart at du får en sånn type oppgave første gangen. Denne ser vanskeligere ut en den første vi hadde og jeg SLET. :svett:
Jeg har 5 vekttall Java med karakteren 2.5 .. Det tror jeg er det festligste som står i mitt vitnemål. Ser jeg har ikke sjans til å forstå bæret her!! :lol:
Men nå er det noen år siden også da. Faktisk 8 år .:D
Nei, jeg har ikke levert. Har sendt en mail til foreleser(hadde gjort det fra før av også, men tror han er på ferie) og spurt pent om å få levere innen søndag. Regner med det går greit, sendte over koden for å vise at jeg har jobbet og ikke bare bedt om utsettelse fordi jeg ikke hadde begynt med oppgaven.
Har full forståelse for at du ikke rakk innom, HP. Jeg kan heller ikke akkurat forvente at andre skal gjøre mine lekser, jeg er vel såpass gammel at jeg burde klare det selv egentlig :rolleyes: men akkurat nå frister det mest å lukke igjen pc'n og si greit jeg får bare finne meg noe annet å drive på med. Dette er ikke noe for meg, men jeg hater å gi opp.
Nå ser koden slik ut:
Bok
public class Bok {
private String tittel;
private String forfatter;
private int utgivelsesar;
private String forlag;
private int antallSider;
public int numPages;
public String getName;
public Bok(String tittel, String forfatter, int år, int antSider, String forlag){
this.tittel = tittel;
this.forfatter = forfatter;
endreUtgivelsesar(år);
endreAntSider(antSider);
this.forlag = forlag;
}
//--------------- metoder som returnerer verdier --------------
public String visTittel (){
return tittel;
}
public String visForfatter (){
return forfatter;
}
public int visUtgivelsesar (){
return utgivelsesar;
}
public int visAntallSider (){
return antallSider;
}
public void setAntallSider (int AntallSider) {
AntallSider = AntallSider();
}
public int getAntallSider() {
return AntallSider;
}
//dette er en mutasjonsmetode
public void setNumPages(int numOfPages){
numPages = numOfPages;
}
//dette er enn tilgangsmetode
public int getNumPages(){
return numPages;
}
public void setGetName(String getOneName){
getName = getOneName;
}
public String getName(){
return Name;
}
//------------------- metoder som endrer på attributter ------------------------
public void endreUtgivelsesar(int ar) {
utgivelsesar = ar;
public Bibliotek(){
bokListe = new ArrayList();
}
private int finnBokPosisjon(String forfatter, String tittel){
int BokPosIndex = -1;
for(int i = 0; i < bokListe.size(); i++){
//System.out.println("Test om forfatter:"+forfatter+" og "+bokListe.get(i) .visForfatter()+" er like");
//System.out.println("Test om tittel:"+tittel+" og "+bokListe.get(i) .visTittel()+" er like");
if(bokListe.get(i).visForfatter().equalsIgnoreCase(forfatter)&& bokListe.get(i).visTittel().equalsIgnoreCase(tittel)){
BokPosIndex = i;
break; //antar at søket skal stoppe ved første treff
}
}
return BokPosIndex;
}
public int visAntallBoker(){
return bokListe.size();
}
public boolean leggTilBok(String forfatter,String tittel,int ar, int antSider, String forlag){
boolean BokBleLagtTil = false;
if(finnBokPosisjon(forfatter, tittel) == -1){
Bok enBok = new Bok(forfatter, tittel, ar, antSider, forlag);
Bok toBok = new Bok(forfatter, tittel, ar, antSider, forlag);
Bok treBok = new Bok(forfatter, tittel, ar, antSider, forlag);
En av grunnene til at jeg sliter sånn er at vi ikke har lært så mye som står i oppgaven, vi er ikke så langt i boka engang(vi jobber etter bok i forelesningen). Så jeg er avhengig av å leste og prøve å lære meg fra boka og se etter eksempler på nettet. Resultatet blir deretter.
Jeg er bare her inne for å vise min dypeste sympati, jeg hatet programmering dypt og intenst da jeg studerte. Heldigvis er det eneste jeg har hatt bruk for det i ettertid måten man tenker på, logikken og strukturen, og det er mye greiere enn selve kodene.
Jeg har fikset litt på Bok-klassen din, og lagt inn eksempel på sammenligningsmetode, samt aksessor- og mutatormetoder for alle variabler. Jeg har ingen kompilator, så det får du ta deg av. :) Jeg tar forbehold om skrivefeil. (Jeg må også si at det nå er et år siden jeg sist rørte Java, så jeg er ikke helt oppdatert, blundere kan forekomme. ;))
public class Bok {
private String tittel;
private String forfatter;
private int utgivelsesar;
private String forlag;
private int antallSider;
public Bok(String tittel, String forfatter, int utgivelsesar, int antSider, String forlag) {
setTittel(tittel);
setForfatter(forfatter);
setUtgivelsesar(utgivelsesar);
setAntallSider(atSider);
setForlag(forlag);
}
/**
Aksessormetoder
*/
public String getTittel () {
return tittel;
}
public String getForfatter () {
return forfatter;
}
public int getUtgivelsesar () {
return utgivelsesar;
}
public int getAntallSider () {
return antallSider;
}
public String getForlag() {
return forlag;
}
/**
Mutatormetoder
*/
public set(String tittel, String forfatter, int utgivelsesar, int antSider, String forlag) {
setTittel(tittel);
setForfatter(forfatter);
setUtgivelsesar(utgivelsesar);
setAntallSider(atSider);
setForlag(forlag);
}
public void setAntallSider (int antallSider) {
this.antallSider = antallSider;
}
public void setTittel(String tittel) {
this.tittel = tittel;
}
public void setForfatter(String forfatter) {
this.forfatter = forfatter;
}
public void setUtgivelsesar(int utgivelsesar) {
this.utgivelsesar = utgivelsesar;
}
public void setForlag(String forlag) {
this.forlag = forlag;
}
/**
Metode for sammenligning av denne boken med en annen
Eksempelet viser antall sider, kan også brukes på andre elenemt
*/
public int comparePages(Bok annenBok) {
if (this.antallSider < annenBok.getAntallSider())
return -1;
else if (this.antallSider > annenBok.getAntallSider())
return 1;
else
return 0;
}
/**
"Obligatoriske" metoder, overstyrer Object sine metoder
*/
public boolean equals(Object annenBok) {
//Test om annenBok er en bok før du fortsetter
if (this.tittel == annenBok.getTittel() && this.forfatter == annenBok.getForfatter() && this.utgivelsesar == annenBok.getUtgivelsesar() && this.antallSider == annenBok.getAntallSider() && this.forlag == annenBok.getForlag())
return true;
else
return false;
}
Det var kun en feil under kompilering av klassen bok:
43: invalid method declaration; return type required
public set(String tittel, String forfatter, int utgivelsesar, int antSider, String forlag) {
pilen skal stod foran set ^
Ikke vi heller, syntes ikke vi har forutsetning til å klare dette, ikke jeg i alle fall. Men vet noen i klassen har drevet med Java før, så de har ikke de samme problemene.
Du tenker nok på public static void main, og det får du mer av senere i utdanningen. 'public void set()' er det samme som 'public void setAntallSider()', bare det at den første tar alle variablene som kan endres i objektet (tar jo bare de du bestemmer, men konvensjonelt så tar den alt), praktisk noen ganger, ikke nødvendig for å besvare HHs oppgave.
Jeg syns forøvrig oppgaven så helt grei ut, bortsett fra et unødvendig fokus på presentasjon (tabell og meny), presentasjon (GUI) må komme når kjernebegrepene og forståelsen er på plass, syns jeg.