Nytt nybörjarproblem (Java)
Jag sitter och försöker lära mig lite java och har fastnat på en uppgift som jag hittade på nätet.
Man ska skapa lite olika klasser med "Things", "Suitcases", och "Containers" där Things är objekt med namn och vikt som kan lagras i Suitcases som har en maxvikt.
Suitcases can därefter lagras i Containers. Men jag har kört fast på sista deluppgiften där jag ska skapa 100st Suitcases med en st "brick" som har en vikt på 1 och där vikten ökar med +1 för varje ny "brick". Men jag har problem med metoden för att skapa de 100st "suitcaseserna" i Main.
Det är altså detta som jag inte förstår varför det inte funkar:
container.addSuitcase(new Suitcase(100).addThing(new Thing("brick",i)));
Jag får bara felmeddelandet "void type not allowed"
Main:
public class Main {
public static void main(String[] args) {
Thing brick = new Thing("Brick", 4);
Suitcase georgesCase = new Suitcase(10);
georgesCase.addThing(brick);
Container container = new Container(1000);
container.addSuitcase(georgesCase);
System.out.println("There are the following things in the container suitcases:");
container.printThings();
}
public static void addSuitcasesFullOfBricks(Container container) {
for (int i = 1; i <= 100; i++) {
container.addSuitcase(new Suitcase(100).addThing(new Thing("brick",i)));
}
}
}
Hjälp-classerna:
public class Thing {
private String name;
private int weight;
public Thing(String name, int weight) {
this.name = name;
this.weight = weight;
}
public String getName() {
return this.name;
}
public int getWeight() {
return this.weight;
}
public String toString() {
return getName() + " (" + getWeight() + " kg)";
}
}
public class Suitcase {
private int maxWeight;
private ArrayList<Thing> things;
private int currentWeight;
public Suitcase(int maxWeight) {
this.maxWeight = maxWeight;
this.things = new ArrayList<Thing>();
this.currentWeight = 0;
}
public void addThing(Thing thing) {
if (this.currentWeight + thing.getWeight() <= this.maxWeight) {
this.things.add(thing);
this.currentWeight += thing.getWeight();
}
}
public void printThings() {
for (Thing thing : things) {
System.out.println(thing);
}
}
public int totalWeight() {
return this.currentWeight;
}
public Thing heaviestThing() {
int maxWeight = 0;
int indexOfHeaviestThing = 0;
if(things.size() == 0){
return null;
}
else{
for (int i = 0; i < this.things.size(); i++) {
if (this.things.get(i).getWeight() > maxWeight) {
maxWeight = things.get(i).getWeight();
indexOfHeaviestThing = i;
}
}
return things.get(indexOfHeaviestThing);
}
}
public String toString() {
if (things.size() == 0) {
return "empty (0 kg)";
} else if (things.size() == 1) {
return things.size() + " thing (" + this.currentWeight + " kg)";
} else {
return things.size() + " things (" + this.currentWeight + " kg)";
}
}
}
import java.util.ArrayList;
public class Container {
private ArrayList<Suitcase> suitcases;
private int maxWeight;
private int totalWeightOfSuitcases;
public Container(int maxWeight) {
this.maxWeight = maxWeight;
this.suitcases = new ArrayList<Suitcase>();
this.totalWeightOfSuitcases = 0;
}
public void addSuitcase(Suitcase suitcase) {
if (this.totalWeightOfSuitcases + suitcase.totalWeight() <= this.maxWeight) {
this.suitcases.add(suitcase);
this.totalWeightOfSuitcases += suitcase.totalWeight();
}
}
public void printThings(){
for(Suitcase s:suitcases){
s.printThings();
}
}
public String toString() {
return this.suitcases.size() + " suitcases (" + totalWeightOfSuitcases + " kg)";
}
}