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
Annonceindlæg fra Kingston Technology
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.
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; } }
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?
17. januar 2012 - 01:23
#4
ja - < og > styrer om det er mindst eller stoerst
17. januar 2012 - 02:05
#5
herligt. Smider du et svar? og mange tak for hjælpen:-)
17. januar 2012 - 02:52
#6
svar
Kurser inden for grundlæggende programmering