Avatar billede madser22 Novice
17. januar 2012 - 00:11 Der er 5 kommentarer og
1 løsning

mostExpensive

Hejsa igen.

Jeg er igang med anden sidste opgave på et ark, som lyder som følgende:

Programmér metoden mostExpensive. Metoden skal returnere det dyreste Painting-objektet fra et Museum-objekt (det kan antages at museet ikke er tomt). Hvis flere malerier er lige dyre, er det underordnet hvilket af disse der returneres. Udvid Painting-klassen med de nødvendige get-metoder.

Jeg har disse tre klasser indtil videre:

/**
* Mads Kristensen
* Studienr: 20117393
*/
public class Driver
{   
    public static void exam() {
       
        Painting p1 = new Painting("Vencent Van Gogh", "Starry Night", 1889, 3452);
        Painting p2 = new Painting("Lars Thomsen", "Flower", 1839, 3746);
        System.out.println(p1.toString());
        System.out.println(p2.toString());
       
        Museum m = new Museum("Test");
        m.add(p1);
        m.add(p2);
       
        System.out.println(m.oldestPainting().toString());
    }

   
}



import java.util.*;
/**
* Mads Kristensen
* Studienr: 20117393
*/
public class Museum
{
    private String museumName;
    private ArrayList<Painting> listOfPaintings = new ArrayList<Painting>();

    public Museum (String museumName)
    {
        this.museumName = museumName;
    }

   
    public void add(Painting p) {
       
        listOfPaintings.add(p);
    }
   
    public void remove(Painting p) {
   
        listOfPaintings.remove(p);
    }
   
    public Painting oldestPainting() {
   
    //if(listOfPaintings.size() <= 0) return null;
   
        Painting res = listOfPaintings.get(0);
        for(int i = 1; i < listOfPaintings.size(); i++) {
            if(res.getValue() > listOfPaintings.get(i).getValue()) {
                res = listOfPaintings.get(i);
            }
        }
        return res;
   
}
    public Painting mostExpensive() {
        Painting res = listOfPaintings.get(0);
        for(Painting p : listOfPaintings) {
           
            if(p.getValue() > result.getValue()) {
           
                result = p;
            }
       
        }
        return result;
   
    }
   
   
   
   
}




/**
* Mads Kristensen
* Studienr: 20117393
*/
public class Painting
{
    private String artist, name;
    private int year, value;

    public Painting(String artist, String name, int year, int value)
    {
        this.artist = artist;
        this.name = name;
        this.year = year;
        this.value = value;
    }

   
    public String toString()
    {
        return(artist + ", " + name + ", " + year + ", " + value);
    }
   
    public int getValue() {
   
        return value;
    }
   
    /*public int mostExpensive() {
   
        return expensive;
    }*/
   
 
}


Jeg har indtil videre lavet på spørgsmålet fra starten af denne tråd:

public Painting mostExpensive() {
        Painting res = listOfPaintings.get(0);
        for(Painting p : listOfPaintings) {
           
            if(p.getValue() > result.getValue()) {
           
                result = p;
            }
       
        }
        return result;
   
    }

er jeg helt forkert på den?

Mvh Mads
Avatar billede arne_v Ekspert
17. januar 2012 - 00:19 #1
Museum oldestPainting and Museum mostExpensive skal ligne hinanden.

Painting skal have en getYear og en getValue.

Museum oldestPainting skal bruge getYear.

Museum mostExpensive skal bruge getValue.
Avatar billede madser22 Novice
17. januar 2012 - 00:31 #2
Har ændret tingene nu, men den udskriver den billigste:


/**
* Mads Kristensen
* Studienr: 20117393
*/
public class Painting
{
    private String artist, name;
    private int year, value;

    public Painting(String artist, String name, int year, int value)
    {
        this.artist = artist;
        this.name = name;
        this.year = year;
        this.value = value;
    }

   
    public String toString()
    {
        return(artist + ", " + name + ", " + year + ", " + value);
    }
   
    public int getYear() {
   
        return value;
    }
   
    public int getValue() {
   
        return value;
    }
   
 
}





import java.util.*;
/**
* Mads Kristensen
* Studienr: 20117393
*/
public class Museum
{
    private String museumName;
    private ArrayList<Painting> listOfPaintings = new ArrayList<Painting>();

    public Museum (String museumName)
    {
        this.museumName = museumName;
    }

   
    public void add(Painting p) {
       
        listOfPaintings.add(p);
    }
   
    public void remove(Painting p) {
   
        listOfPaintings.remove(p);
    }
   
    public Painting oldestPainting() {
   
    //if(listOfPaintings.size() <= 0) return null;
   
        Painting res = listOfPaintings.get(0);
        for(int i = 1; i < listOfPaintings.size(); i++) {
            if(res.getYear() > listOfPaintings.get(i).getYear()) {
                res = listOfPaintings.get(i);
            }
        }
        return res;
   
}
    public Painting mostExpensive() {
        Painting res = listOfPaintings.get(0);
        for(int i = 1; i < listOfPaintings.size(); i++) {
            if(res.getValue() > listOfPaintings.get(i).getValue()) {
                res = listOfPaintings.get(i);
            }
        }
        return res;
   
    }
   
}
Avatar billede madser22 Novice
17. januar 2012 - 00:35 #3
Det virker nu:

public Painting mostExpensive() {
        Painting res = listOfPaintings.get(0);
        for(int i = 1; i < listOfPaintings.size(); i++) {
            if(res.getValue() < listOfPaintings.get(i).getValue()) {
                res = listOfPaintings.get(i);
            }
        }
        return res;
   
    }
   
    }


istedet for:


public Painting mostExpensive() {
        Painting res = listOfPaintings.get(0);
        for(int i = 1; i < listOfPaintings.size(); i++) {
            if(res.getValue() > listOfPaintings.get(i).getValue()) {
                res = listOfPaintings.get(i);
            }
        }
        return res;
   
    }


ændringen er < i if sætningen. Er det rigtigt?
Avatar billede arne_v Ekspert
17. januar 2012 - 01:23 #4
ja - < og > styrer om det er mindst eller stoerst
Avatar billede madser22 Novice
17. januar 2012 - 02:05 #5
herligt. Smider du et svar? og mange tak for hjælpen:-)
Avatar billede arne_v Ekspert
17. januar 2012 - 02:52 #6
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester