Velkommen, Gjest.

< Tilbake til oversikten | Hvem kan lese?

Noen som kan Java her?

#1

*HH* sa for siden:

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.

Endret kode i innlegg #17

BibliotekTest:

public class BibliotekTest {

public static void main(String[] args) {

Bibliotek etBibliotek = new Bibliotek();

etBibliotek.leggTilBok("Italienske sko", "Henning Mankell", 1999, 306, "Gyldendal");
etBibliotek.visAntallBoker();
Bok enBok = etBibliotek.finnBok("Henning Mankell","Italienske sko");

if (enBok != null) {
System.out.print(enBok.visTittel());
System.out.print(enBok.visForfatter());
}

}
}

bibliotek:
import java.util.*;
//import java.text.*;
import java.util.ArrayList;
import java.util.Collections; //for å sortere arraylistene..

public class Bibliotek {

private ArrayList bokListe;

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){

//System.out.print(bokListe.get(0).visForfatter());
//System.out.print(bokListe.get(0).visTittel());

Bok funnetBok = null;
int BokIndex = finnBokPosisjon(forfatter, tittel);
if(BokIndex != -1){
funnetBok = bokListe.get(BokIndex);
}
return funnetBok;
}
public Bok slettBok(String tittel, String forfatter){
Bok funnetBok = null;
int BokIndex = finnBokPosisjon(forfatter, tittel);
if(BokIndex != -1){
funnetBok = bokListe.get(BokIndex);
bokListe.remove(BokIndex);
}
return funnetBok;
}

public ArrayList finnAlleBoker(String forfatter){
ArrayList bokListePaaForfatter = new ArrayList();
for(int i = 0; i < bokListe.size(); i++){
if(bokListe.get(i).visForfatter().equalsIgnoreCase(forfatter)){
bokListePaaForfatter.add(bokListe.get(i));
}
}
//Collections.sort(bokListePaaForfatter);
return bokListePaaForfatter;
}
}

Bok:
public class Bok {
private String tittel;
private String forfatter;
private int utgivelsesår;
private String forlag;
private int antallSider;

public Bok(String tittel, String forfatter, int år, int antSider, String forlag){
this.tittel = tittel;
this.forfatter = forfatter;
endreUtgivelsesår(år);
endreAntSider(antSider);
this.forlag = forlag;
}

//--------------- metoder som returnerer verdier --------------

public String visTittel (){
return tittel;
}

public String visForfatter (){
return forfatter;
}

public int visUtgivelsesÅr (){
return utgivelsesår;
}

//------------------- metoder som endrer på attributter ------------------------

public void endreUtgivelsesår(int år) {
utgivelsesår = år;

}

public void endreAntSider(int antSider){
if(antSider > 0){
antallSider = antSider;
}

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

public String toString(){
return String.format("%s (%s, %d) ",
tittel, forfatter, utgivelsesår);
}

}

Og hvordan kan jeg lage metoder som sammenligner antallsider, utgiver, utgitt årstall osv på to bøker?

Desperat HH


#2

torsk sa for siden:

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


#3

Sitron sa for siden:

Java java hut hut, a nam nam. Nei?


#4

*HH* sa for siden:

BibliotekTest:

public class BibliotekTest {

public static void main(String[] args) {

Bibliotek etBibliotek = new Bibliotek();

etBibliotek.leggTilBok("Italienske sko", "Henning Mankell", 1999, 306, "Gyldendal");
etBibliotek.visAntallBoker();
Bok enBok = etBibliotek.finnBok("Henning Mankell","Italienske sko");

if (enBok != null) {
System.out.print(enBok.visTittel());
System.out.print(enBok.visForfatter());
}

}
}

bibliotek:
import java.util.*;
//import java.text.*;
import java.util.ArrayList;
import java.util.Collections; //for å sortere arraylistene..

public class Bibliotek {

private ArrayList bokListe;

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){

//System.out.print(bokListe.get(0).visForfatter());
//System.out.print(bokListe.get(0).visTittel());

Bok funnetBok = null;
int BokIndex = finnBokPosisjon(forfatter, tittel);
if(BokIndex != -1){
funnetBok = bokListe.get(BokIndex);
}
return funnetBok;
}
public Bok slettBok(String tittel, String forfatter){
Bok funnetBok = null;
int BokIndex = finnBokPosisjon(forfatter, tittel);
if(BokIndex != -1){
funnetBok = bokListe.get(BokIndex);
bokListe.remove(BokIndex);
}
return funnetBok;
}

public ArrayList finnAlleBoker(String forfatter){
ArrayList bokListePaaForfatter = new ArrayList();
for(int i = 0; i < bokListe.size(); i++){
if(bokListe.get(i).visForfatter().equalsIgnoreCase(forfatter)){
bokListePaaForfatter.add(bokListe.get(i));
}
}
//Collections.sort(bokListePaaForfatter);
return bokListePaaForfatter;
}
}

Bok:
public class Bok {
private String tittel;
private String forfatter;
private int utgivelsesår;
private String forlag;
private int antallSider;

public Bok(String tittel, String forfatter, int år, int antSider, String forlag){
this.tittel = tittel;
this.forfatter = forfatter;
endreUtgivelsesår(år);
endreAntSider(antSider);
this.forlag = forlag;
}

//--------------- metoder som returnerer verdier --------------

public String visTittel (){
return tittel;
}

public String visForfatter (){
return forfatter;
}

public int visUtgivelsesÅr (){
return utgivelsesår;
}

//------------------- metoder som endrer på attributter ------------------------

public void endreUtgivelsesår(int år) {
utgivelsesår = år;

}

public void endreAntSider(int antSider){
if(antSider > 0){
antallSider = antSider;
}

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

public String toString(){
return String.format("%s (%s, %d) ",
tittel, forfatter, utgivelsesår);
}

}


#5

*HH* sa for siden:

Det skulle være et et takk der også, men jeg ble litt stresset når jeg så du hadde dårlig tid :humre:


#6

*HH* sa for siden:

Jeg får ikke til å legge inn en til bok slik som enBok, skal ha to bøker slik at disse kan sammenlignes(sidetall, forfattere, utgiver osv.)


#7

*HH* sa for siden:

Dette er oppgaven:

Jeg er så redd for å stryke, det er vanskelig nok å få til med famililivet, hvis man i tillegg må gå opp igjen :rødme:

Fristen er til midnatt, så jeg har jo resten av dagen, har sittet med dette siden 08.30 så nå er jeg helt surrete i hodet her.


#8

*HH* sa for siden:

Se bort i fra at innholdet bare er tull, men nå klarte jeg å legge inn bøker :D

etBibliotek.leggTilBok("Berliner Poplene", "Anne B. Ragde", 2001, 411, "Per");
Bok toBok = etBibliotek.finnBok("Anne B. Ragde", "Berliner Poplene");
etBibliotek.leggTilBok("Erasmus Montanus", "Hans Nilsen", 1908, 200, "Gyldendal");
Bok treBok = etBibliotek.finnBok("Hans Nilsen", "Erasmus Montanus");


#9

HP sa for siden:

Fungerer det med æ, ø og å i metode- og variabelnavn altså?


#10

*HH* sa for siden:

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.


#11

torsk sa for siden:

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


#12

HP sa for siden:

Tips: Bruk i stedet for når dere limer inn kode.

Når skal du levere inn, HH?


#13

*HH* sa for siden:

Tusen takk, torsk! Den første

trodde jeg at jeg hadde slettet. Det var bare jeg som satt å prøvde meg litt frem.

#14

*HH* sa for siden:

Tusen takk for tips, HP. Skal huske på det.

Skal levere innen midnatt, men foreleseren sa han antakeligvis ikke sjekket da, men vil jo gjerne få levert innen fristen.


#15

torsk sa for siden:

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*

#16

*HH* sa for siden:

Tusen takk :blomster:, jeg skal klare å kompiliere det.

God tur og god helg :klem:


#17

*HH* sa for siden:

Da er koden endret litt:

public class BibliotekTest {

public static void main(String[] args) {

Bibliotek etBibliotek = new Bibliotek();

etBibliotek.leggTilBok("Italienske sko", "Henning Mankell", 1999, 306, "Gyldendal");
System.out.println(etBibliotek.visAntallBoker());
Bok enBok = etBibliotek.finnBok("Henning Mankell", "Italienske sko");

etBibliotek.leggTilBok("Berliner Poplene", "Anne B. Ragde", 2001, 411, "Per");
Bok toBok = etBibliotek.finnBok("Anne B. Ragde", "Berliner Poplene");
etBibliotek.leggTilBok("Erasmus Montanus", "Hans Nilsen", 1908, 200, "Gyldendal");
Bok treBok = etBibliotek.finnBok("Hans Nilsen", "Erasmus Montanus");

//if (enBok != null) {
//System.out.print(enBok.visTittel());
//System.out.println(etBibliotek.finnBok("Test2", "Test1"));
//}

}
}

public class Bok {
private String tittel;
private String forfatter;
private int utgivelsesår;
private String forlag;
private int antallSider;

public Bok(String tittel, String forfatter, int år, int antSider, String forlag){
this.tittel = tittel;
this.forfatter = forfatter;
endreUtgivelsesår(år);
endreAntSider(antSider);
this.forlag = forlag;
}

//--------------- metoder som returnerer verdier --------------

public String visTittel (){
return tittel;
}

public String visForfatter (){
return forfatter;
}

public int visUtgivelsesÅr (){
return utgivelsesår;
}

//------------------- metoder som endrer på attributter ------------------------

public void endreUtgivelsesår(int år) {
utgivelsesår = år;

}

public void endreAntSider(int antSider){
if(antSider > 0){
antallSider = antSider;
}

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

public String toString(){
return String.format("%s (%s, %d) ",
tittel, forfatter, utgivelsesår);
}

}

import java.util.*;
//import java.text.*;
import java.util.ArrayList;
import java.util.Collections; //for å sortere arraylistene..

public class Bibliotek {

private ArrayList bokListe;

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);

bokListe.add(enBok);
bokListe.add(toBok);
bokListe.add(treBok);
BokBleLagtTil = true;
}
return BokBleLagtTil;
}

public Bok finnBok(String forfatter, String tittel){

//System.out.print("Det gikk");

System.out.print(bokListe.get(0).visForfatter());
//System.out.print(bokListe.get(0).visTittel());

Bok funnetBok = null;
int BokIndex = finnBokPosisjon(forfatter, tittel);
if(BokIndex != -1){
funnetBok = bokListe.get(BokIndex);
}
return funnetBok;
}
public Bok slettBok(String tittel, String forfatter){
Bok funnetBok = null;
int BokIndex = finnBokPosisjon(forfatter, tittel);
if(BokIndex != -1){
funnetBok = bokListe.get(BokIndex);
bokListe.remove(BokIndex);
}
return funnetBok;
}

public ArrayList finnAlleBoker(String forfatter){
ArrayList bokListePaaForfatter = new ArrayList();
for(int i = 0; i < bokListe.size(); i++){
if(bokListe.get(i).visForfatter().equalsIgnoreCase(forfatter)){
bokListePaaForfatter.add(bokListe.get(i));
}
}
//Collections.sort(bokListePaaForfatter);
return bokListePaaForfatter;
}

//public boolean Test (String enBok, String toBok){
//if(forfatter).equals (forfatter)) {
//System.out.println("Funker");
//}
//System.out

public int sammenlign(Bok enBok, Bok toBok){
if (enBok.getNumPages()toBok.getNumPages()){
return 1;
}
// must be equal, return 0
return 0;
}

}


#18

HP sa for siden:

HH: Jeg er på nett i kveld så du kan poste det du har av kode senere, hvis du står fast.


#19

*HH* sa for siden:

Kommentarene skal ikke stå slik de gjør nå.


#20

Agent Scully sa for siden:

Dette er litt som å se på Jordmødre, interessante problemstillinger, men jeg er så glad det ikke er jeg som står midt oppi det ... :humre:


#21

*HH* sa for siden:

Denne koden

 public int sammenlign(Bok enBok, Bok toBok){
     if (enBok.getNumPages()toBok.getNumPages()){
         return 1;
     }
     // must be equal, return 0
     return 0;
 }
får jeg fire feilmeldinger på, alle feilmeldingene peker på punktumet. En av feilmeldingene:

.\Bibliotek.java:94: cannot find symbol
symbol : method getNumPages()
location: class Bok
if (enBok.getNumPages()


#22

HP sa for siden:

Hvorfor kaller du metoden for sammenlign? Mener der er en konvensjon på den der, du må overstyre compareTo (tror jeg den heter?) fra Object-klassen.

Ang feilmelding: Har du metoden med navnet getNumPages() i Bok klassen?


#23

HP sa for siden:

Equals heter den. Med mindre Bok har Comparator klassen implementert.


#24

HP sa for siden:

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?


#25

*HH* sa for siden:

Det stemmer nok at jeg mangler den ja. Det skal bare være klasser og testprogram ja :ja:


#26

*HH* sa for siden:

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 void endreAntSider(int antSider){
if(antSider > 0){
antallSider = antSider;
}

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

public String toString(){
return String.format("%s (%s, %d) ",
tittel, forfatter, utgivelsesar);
}

}

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 String getName(){
return Name;
{

BibliotekTest:

public class BibliotekTest {

public static void main(String[] args) {

Bibliotek etBibliotek = new Bibliotek();

etBibliotek.leggTilBok("Italienske sko", "Henning Mankell", 1999, 306, "Gyldendal");
System.out.println(etBibliotek.visAntallBoker());
Bok enBok = etBibliotek.finnBok("Henning Mankell", "Italienske sko");

etBibliotek.leggTilBok("Berliner Poplene", "Anne B. Ragde", 2001, 411, "Per");
Bok toBok = etBibliotek.finnBok("Anne B. Ragde", "Berliner Poplene");
etBibliotek.leggTilBok("Erasmus Montanus", "Hans Nilsen", 1908, 200, "Gyldendal");
Bok treBok = etBibliotek.finnBok("Hans Nilsen", "Erasmus Montanus");

//if (enBok != null) {
//System.out.print(enBok.visTittel());
//System.out.println(etBibliotek.finnBok("Test2", "Test1"));
//}

}
}

Bibliotek:
import java.util.*;
//import java.text.*;
import java.util.ArrayList;
import java.util.Collections; //for å sortere arraylistene..

public class Bibliotek {

private ArrayList bokListe;

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);

bokListe.add(enBok);
bokListe.add(toBok);
bokListe.add(treBok);
BokBleLagtTil = true;
}
return BokBleLagtTil;
}

public Bok finnBok(String forfatter, String tittel){

//System.out.print("Det gikk");

System.out.print(bokListe.get(0).visForfatter());
//System.out.print(bokListe.get(0).visTittel());

Bok funnetBok = null;
int BokIndex = finnBokPosisjon(forfatter, tittel);
if(BokIndex != -1){
funnetBok = bokListe.get(BokIndex);
}
return funnetBok;
}
public Bok slettBok(String tittel, String forfatter){
Bok funnetBok = null;
int BokIndex = finnBokPosisjon(forfatter, tittel);
if(BokIndex != -1){
funnetBok = bokListe.get(BokIndex);
bokListe.remove(BokIndex);
}
return funnetBok;
}

public ArrayList finnAlleBoker(String forfatter){
ArrayList bokListePaaForfatter = new ArrayList();
for(int i = 0; i < bokListe.size(); i++){
if(bokListe.get(i).visForfatter().equalsIgnoreCase(forfatter)){
bokListePaaForfatter.add(bokListe.get(i));
}
}
//Collections.sort(bokListePaaForfatter);
return bokListePaaForfatter;
}

//public boolean Test (String enBok, String toBok){
//if(forfatter).equals (forfatter)) {
//System.out.println("Funker");
//}
//System.out

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.


#27

Pastill sa for siden:

ÅFFFF... merker jeg ikke er misunnelig på denne oppgaven... kryper tilbake til min egen... :lol:


#28

*HH* sa for siden:

Hva slags oppgave sitter du med? Blir jo nysgjerrig når du sier sånt :)


#29

Pastill sa for siden:

Bilderedigeringsoppgaver. :) Picture.java.


#30

*HH* sa for siden:

Du er litt lenger enn meg du da :-)


#31

Pastill sa for siden:

Ikke nødvendigvis.. kommer vel helt annpå oppgaven?
Har dere gjort skilpadda eller?


#32

*HH* sa for siden:

Nei, dette er vår første obl. oppgave. Det vi har gjort på forelesning er omtrent bare penger ut og inn av en bankkonto. Ikke noe i nærheten av dette.


#33

Pastill sa for siden:

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?


#34

*HH* sa for siden:

Nei, og som jeg har skjønt er det kanskje enklere måter å gjøre det på når man ikke har lært array.


#35

Ru sa for siden:

:lalala:
Jeg har papirer på at jeg kan java, men det papiret er jammen ikke verdt mye. :knegg:

Håper du finner ut av det!


#36

Pastill sa for siden:

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:


#37

Magica sa for siden:

Samme her!


#38

Manga sa for siden:

Jeg har også papirer på det. Jeg er fortsatt i sjokk over at jeg kom meg gjennom :fnis:
Uff, jeg misunner deg veldig lite merker jeg...

Lykke til! Håper det går bra.


#39

Pastill sa for siden:

Jeg har levert 3 oblig. :erfaren: :stolt:

:lol: Da er dette faget som jeg frykter.. inn det ene øret og ut det andre...


#40

Mandarin sa for siden:

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

Håper det gikk greit :klem:


#41

HP sa for siden:

Har du levert? Jeg rakk ikke komme på innom her i går kveld, beklager.


#42

*HH* sa for siden:

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 void endreAntSider(int antSider){
if(antSider > 0){
antallSider = antSider;
}

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

public String toString(){
return String.format("%s (%s, %d) ",
tittel, forfatter, utgivelsesar);
}

}

Bibliotek

import java.util.*;
//import java.text.*;
import java.util.ArrayList;
import java.util.Collections; //for å sortere arraylistene..

public class Bibliotek {

private ArrayList bokListe;

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);

bokListe.add(enBok);
bokListe.add(toBok);
bokListe.add(treBok);
BokBleLagtTil = true;
}
return BokBleLagtTil;
}

public Bok finnBok(String forfatter, String tittel){

/*System.out.print("Det gikk");

System.out.print(bokListe.get(0).visForfatter());
System.out.print(bokListe.get(0).visTittel());*/

Bok funnetBok = null;
int BokIndex = finnBokPosisjon(forfatter, tittel);
if(BokIndex != -1){
funnetBok = bokListe.get(BokIndex);
}
return funnetBok;
}
public Bok slettBok(String tittel, String forfatter){
Bok funnetBok = null;
int BokIndex = finnBokPosisjon(forfatter, tittel);
if(BokIndex != -1){
funnetBok = bokListe.get(BokIndex);
bokListe.remove(BokIndex);
}
return funnetBok;
}

public ArrayList finnAlleBoker(String forfatter){
ArrayList bokListePaaForfatter = new ArrayList();
for(int i = 0; i < bokListe.size(); i++){
if(bokListe.get(i).visForfatter().equalsIgnoreCase(forfatter)){
bokListePaaForfatter.add(bokListe.get(i));
}
}
//Collections.sort(bokListePaaForfatter);
return bokListePaaForfatter;
}

//public boolean Test (String enBok, String toBok){
//if(forfatter).equals (forfatter)) {
//System.out.println("Funker");
//}
//System.out

public boolean sammenligneAntallSider(Bok enBok, Bok toBok){
boolean bokerLike = false;
if(enBok.getAntallSider() == toBok.getAntallSider()){
bokerLike = true;
}
return bokerLike;
}

}

BibliotekTest

public class BibliotekTest {

public static void main(String[] args) {

Bibliotek etBibliotek = new Bibliotek();

etBibliotek.leggTilBok("Italienske sko", "Henning Mankell", 1999, 306, "Gyldendal");
System.out.println(etBibliotek.visAntallBoker());
Bok enBok = etBibliotek.finnBok("Henning Mankell", "Italienske sko");

etBibliotek.leggTilBok("Berliner Poplene", "Anne B. Ragde", 2001, 411, "Per");
Bok toBok = etBibliotek.finnBok("Anne B. Ragde", "Berliner Poplene");
etBibliotek.leggTilBok("Erasmus Montanus", "Hans Nilsen", 1908, 200, "Gyldendal");
Bok treBok = etBibliotek.finnBok("Hans Nilsen", "Erasmus Montanus");

//if (enBok != null) {
//System.out.print(enBok.visTittel());
//System.out.println(etBibliotek.finnBok("Test2", "Test1"));
//}

}
}


#43

*HH* sa for siden:

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.


#44

Adrienne sa for siden:

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.


#45

HP sa for siden:

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;
    }

public String toString(){
return String.format("%s (%s, %d) ", tittel, forfatter, utgivelsesar);
}
}


#46

*HH* sa for siden:

Så flott, det var virkelig snilt, HP! Skal se på det med engang!


#47

HP sa for siden:

Jeg gjorde en liten endring nå, i equals metoden.


#48

*HH* sa for siden:

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 ^

Du er nok ikke så rusten i Java ;)


#49

HP sa for siden:

public void set(, skulle det være.


#50

*HH* sa for siden:

Eksempel på sammenligning skal inn i Bibliotek slik som jeg hadde den eller er det feil?


#51

HP sa for siden:

Jeg ville hatt metoden i Bok-klassen. Også bruker du den i biblioteket.

All logikk om bok i Bok-klassen, kun logikk om biblioteket i Bibliotek-klassen.


#52

HP sa for siden:

Bruk den slik i bibliotek-klassen:

bok.comparePages(annenBok);

#53

HP sa for siden:

equals-metoden er ikke helt riktig (headingen + koden (logikken er rett)), sjekk forelesningsnotatene dine før du leverer den inn.


#54

*HH* sa for siden:

Det skal jeg gjøre :)


#55

Pastill sa for siden:

Public void SET??? Aldri hørt om... :fnise:

Lykke til..hehe.


#56

HP sa for siden:

set() setter alle variabler, get() henter alle variabler. :)


#57

Pastill sa for siden:

Ok.. vi har aldri skrevet noe annet enn public void main.. kommer sikkert.


#58

*HH* sa for siden:

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.


#59

Pastill sa for siden:

Var litt det jeg stusset på bla. Den oppgaven så rett og slett veldig ukjent ut for min del.. og vi er tydeligvis litt lenger i boka. Snodig.


#60

HP sa for siden:

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.


#61

Pastill sa for siden:

Tenkte på standard frasen "public static void main (String [] args);" ja.
Omtrent det eneste jeg husker utenatt. :haha:


#62

HP sa for siden:

Hvordan gikk det med innleveringen, HH?


#63

*HH* sa for siden:

Ikke veldig bra. Har heller ikke hørt noe enda.


#64

Pastill sa for siden:

Jeg har en kjempemorsom dere kan hjelpe meg med om dere kjeder dere. :nemlig:


#65

HP sa for siden:

Du får poste i en ny tråd, så har vi det å gå til om vi trenger å prokrastinere litt. ;)


#66

Pastill sa for siden:

Ser ut til at jeg kanskje klarer den selv.. Men kan poste fordet om dere har lyst til å prøve dere. :knegg:


Foreldreportalen er i en flytteprosess, denne versjonen av FP er fortsatt under utvikling. Hvis du vil svare i tråden, så kan du gjøre det her.