From 9dc71a43ddc3a2c7da3a436bc9ef7e15ffffc0b7 Mon Sep 17 00:00:00 2001 From: Martin Vatshelle <mva021@ii0233228.klient.uib.no> Date: Thu, 20 Feb 2025 20:45:06 +0100 Subject: [PATCH] Code after lecture 10 --- .../java/forelesning10/IShoppingList.java | 47 ++++++++++++++ src/main/java/forelesning10/ShoppingItem.java | 31 +++++++++ src/main/java/forelesning10/ShoppingList.java | 52 +++++++++++++++ src/main/java/forelesning10/UseIterator.java | 65 +++++++++++++++++++ .../java/forelesning10/UseShoppingList.java | 15 +++++ src/main/java/lecture9/Range.java | 6 +- src/main/java/lecture9/RangeIterator.java | 27 ++++++++ 7 files changed, 240 insertions(+), 3 deletions(-) create mode 100644 src/main/java/forelesning10/IShoppingList.java create mode 100644 src/main/java/forelesning10/ShoppingItem.java create mode 100644 src/main/java/forelesning10/ShoppingList.java create mode 100644 src/main/java/forelesning10/UseIterator.java create mode 100644 src/main/java/forelesning10/UseShoppingList.java create mode 100644 src/main/java/lecture9/RangeIterator.java diff --git a/src/main/java/forelesning10/IShoppingList.java b/src/main/java/forelesning10/IShoppingList.java new file mode 100644 index 0000000..2c14f35 --- /dev/null +++ b/src/main/java/forelesning10/IShoppingList.java @@ -0,0 +1,47 @@ +package forelesning10; + +import java.time.LocalDate; +import java.util.List; + +public interface IShoppingList { + + /** + * Returns a list of all items you need to buy. + * The order of items on this list is irrelevant. + * Multiple items to shop for should occur multiple times on the list. + * + * E.g. If you have 3 apples on your shopping list + * the list this method returns should contain 3 apples. + * + * @return a list of all items to buy + */ + public List<ShoppingItem> getAllItems(); + + /** + * Adds an item to this list. + * If item is not a valid ShoppingItem this method should throw an Exception. + * + * @param item - the item to add + */ + public void add(ShoppingItem item); + + /** + * This gives the date this ShoppingList was created + * @return a date + */ + public LocalDate getDate(); + + /** + * This gives the total sum of the price for all items in the list + * @return + */ + public double totalPrice(); + + /** + * This methods checks how many items on the list has a given name. + * + * @param itemName - the name of the item to count + * @return the number of items with the given name + */ + public int getItemCount(String itemName); +} diff --git a/src/main/java/forelesning10/ShoppingItem.java b/src/main/java/forelesning10/ShoppingItem.java new file mode 100644 index 0000000..d4e6037 --- /dev/null +++ b/src/main/java/forelesning10/ShoppingItem.java @@ -0,0 +1,31 @@ +package forelesning10; + +public class ShoppingItem { + + private String name; + private double price; + + public ShoppingItem(String name, double price) { + super(); + this.name = name; + this.price = price; + } + + public String getName() { + return name; + } + + public double getPrice() { + return price; + } + + @Override + public boolean equals(Object obj) { + if(obj instanceof ShoppingItem) { + return getName().equals(((ShoppingItem) obj).getName()); + } + return false; + } +} + + diff --git a/src/main/java/forelesning10/ShoppingList.java b/src/main/java/forelesning10/ShoppingList.java new file mode 100644 index 0000000..3890984 --- /dev/null +++ b/src/main/java/forelesning10/ShoppingList.java @@ -0,0 +1,52 @@ +package forelesning10; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; + +public class ShoppingList implements IShoppingList { + + private ArrayList<ShoppingItem> handleliste; + private LocalDate date; + + public ShoppingList(LocalDate date) { + handleliste = new ArrayList<ShoppingItem>(); + this.date=date; + } + + @Override + public List<ShoppingItem> getAllItems() { + return new ArrayList<ShoppingItem>( handleliste); + } + + @Override + public void add(ShoppingItem item) { + if(item==null) + throw new IllegalArgumentException("item can not be null"); + handleliste.add(item); + } + + @Override + public LocalDate getDate() { + return date; + } + + @Override + public double totalPrice() { + double sum=0.0; + for(ShoppingItem item : handleliste) { + sum += item.getPrice(); + } + return sum; + } + + @Override + public int getItemCount(String itemName) { + int count=0; + for(ShoppingItem item : handleliste) { + if(item.getName().equals(itemName)) + count++; + } + return count; + } +} diff --git a/src/main/java/forelesning10/UseIterator.java b/src/main/java/forelesning10/UseIterator.java new file mode 100644 index 0000000..b159a4f --- /dev/null +++ b/src/main/java/forelesning10/UseIterator.java @@ -0,0 +1,65 @@ +package forelesning10; + +import static lecture9.Range.range; + +import java.util.ArrayList; +import java.util.Iterator; + +public class UseIterator { + + public static void main(String[] args) { + Iterable<Integer> iterable = range(10); + Iterator<Integer> iterator = iterable.iterator(); + ArrayList<Integer> list = range(10).getList(); + + printMultiples(iterable, 4); + printMultiples(iterator, 4); + + printMultiplicationTable(iterable); + printMultiplicationTable(list); +// printMultiplicationTable(iterator); + } + + public static void printMultiples(Iterator<Integer> iter, int multiple) { +// System.out.println("Using Iterator"); + while(iter.hasNext()) { + int i= iter.next(); + System.out.print(i*multiple+"\t"); + } + System.out.println(); + } + + public static void printMultiples(Iterable<Integer> iter, int multiple) { +// System.out.println("Using Iterable"); + for(int i:iter) { + System.out.print(i*multiple+"\t"); + } + System.out.println(); + } + + public static void printMultiplicationTable(Iterable<Integer> iterable) { + System.out.println("Printing multiplication table"); + int blank = 0; + Iterator<Integer> iter = iterable.iterator(); + while(iter.hasNext()) { + for(int i=0; i < blank; i++) + System.out.print("\t"); + int multiple = iter.next(); + printMultiples(iterable, multiple); + iter.remove(); + blank++; + } + } + + public static void printMultiplicationTable(Iterator<Integer> iter) { + System.out.println("Printing multiplication table"); + while(iter.hasNext()) { + int multiple = iter.next(); + printMultiples(iter, multiple); + } + } + + + + +} diff --git a/src/main/java/forelesning10/UseShoppingList.java b/src/main/java/forelesning10/UseShoppingList.java new file mode 100644 index 0000000..da14b03 --- /dev/null +++ b/src/main/java/forelesning10/UseShoppingList.java @@ -0,0 +1,15 @@ +package forelesning10; + +import java.time.LocalDate; + +public class UseShoppingList { + + public static void main(String[] args) { + ShoppingList hl = new ShoppingList(LocalDate.now()); + + hl.add(new ShoppingItem("Melk", 20)); + hl.getAllItems().add(null); + System.out.println(hl.totalPrice()); + } + +} diff --git a/src/main/java/lecture9/Range.java b/src/main/java/lecture9/Range.java index 4a75407..561e87a 100644 --- a/src/main/java/lecture9/Range.java +++ b/src/main/java/lecture9/Range.java @@ -11,7 +11,7 @@ public class Range implements Iterable<Integer>{ this.max = max; } - ArrayList<Integer> getList(){ + public ArrayList<Integer> getList(){ ArrayList<Integer> indices = new ArrayList<Integer>(); for(int i=0; i<max; i++) { indices.add(i); @@ -21,10 +21,10 @@ public class Range implements Iterable<Integer>{ @Override public Iterator<Integer> iterator() { - return getList().iterator(); + return new RangeIterator(max); } - static Range range(int max) { + public static Range range(int max) { return new Range(max); } } diff --git a/src/main/java/lecture9/RangeIterator.java b/src/main/java/lecture9/RangeIterator.java new file mode 100644 index 0000000..2be16b9 --- /dev/null +++ b/src/main/java/lecture9/RangeIterator.java @@ -0,0 +1,27 @@ +package lecture9; + +import java.util.Iterator; + +public class RangeIterator implements Iterator<Integer> { + + int max; + int cur; + + public RangeIterator(int max) { + this.max=max; + int cur = 0; + } + + @Override + public boolean hasNext() { + return cur<max; + } + + @Override + public Integer next() { + int temp = cur; + cur++; + return temp; + } + +} -- GitLab