From a4d366768219b87b88a733fb3cf37aadcdabe881 Mon Sep 17 00:00:00 2001 From: Giacomo Radaelli Date: Fri, 13 Jan 2023 16:46:13 +0100 Subject: [PATCH] Inizio modifiche a Purse senza ArrayList --- .../Purse senza arraylist/Purse.java | 150 ++++++++++++++++++ .../Purse senza arraylist/PurseTester.java | 21 +++ 2 files changed, 171 insertions(+) create mode 100644 7.x/P7.1,2,3,4,5 Purse/Purse senza arraylist/Purse.java create mode 100644 7.x/P7.1,2,3,4,5 Purse/Purse senza arraylist/PurseTester.java diff --git a/7.x/P7.1,2,3,4,5 Purse/Purse senza arraylist/Purse.java b/7.x/P7.1,2,3,4,5 Purse/Purse senza arraylist/Purse.java new file mode 100644 index 0000000..bfe29a5 --- /dev/null +++ b/7.x/P7.1,2,3,4,5 Purse/Purse senza arraylist/Purse.java @@ -0,0 +1,150 @@ +import java.util.Arrays; + +/** + * Classe che simula un borsellino + * @author radaelli11353 + */ +public class Purse { + private String[] coins; + private int actualSize; + + /** + * Costruttore + * @param dim Quantità massima di monete inseribili nel borsellino + */ + public Purse(int dim) { + coins = new String[dim]; + actualSize = 0; + } + + /** + * Metodo che aggiunge una moneta al borsellino + * @param coinName Nome della moneta + */ + public void addCoin(String coinName) { + coins[actualSize] = coinName; + actualSize++; + } + + /** + * Metodo che inverte gli elementi presenti nel borsellino + */ + public void reverse() { + String[] oldCoins = new String[actualSize]; + oldCoins = Arrays.copyOf(coins, actualSize); + for(int i = 0; i < actualSize; i++) { + coins[i] = oldCoins[actualSize - i - 1]; + } + } + + /** + * Metodo che restituisce il numero di valori presenti nel borsellino + * @return Numero di valori presenti nel borsellino + */ + public int getSize() { + return actualSize; + } + + /** + * Metodo che restituisce il valore di una moneta alla posizione 'i' + * @param i Posizione del valore richiesto + * @return Valore (String) alla posizione 'i' + */ + public String getCoinValue(int i) { + if(i >= actualSize || i < 0) throw new IllegalArgumentException("La moneta all'index" + i + "non è presente nel borsellino"); + return coins[i]; + } + + /** + * Metodo che imposta la moneta ad una posizione 'i' ad un valore 'value' + * @param i Posizione in cui inserire il valore + * @param value Valore (String) da inserire nel borsellino + */ + public void setCoinValue(int i, String value) { + if(i >= actualSize || i < 0) throw new IllegalArgumentException("La moneta all'index" + i + "non è presente nel borsellino"); + coins[i] = value; + } + + /** + * Metodo che svuota il borsellino + */ + public void clear() { + for(int i = 0; i < actualSize; i++) { + coins[i] = ""; + } + } + + /** + * Metodo che sposta le monete contenute in un altro borsellino + * nel borsellino attuale + * @param other Altro borsellino che viene svuotato + */ + public void transfer(Purse other) { + for(int i = 0; i < other.actualSize; i++) { + coins[actualSize + i] = other.coins[i]; + } + actualSize += other.actualSize; + other.clear(); + } + + /** + * Metodo che confronta (per contenuto e posizione del contenuto) due borsellini + * @param other Altro borsellino con cui viene confrontato l'attuale + * @return True se i due borsellini contengono le stesse monete nella stessa posizione, false se non soddisfano queste condizioni + */ + public boolean sameContents(Purse other) { + if(this.actualSize == other.actualSize) { + for(int i = 0; i < actualSize; i++) { + if(coins[i] != other.coins[i]) return false; + } + return true; + } + return false; + } + + /** + * Metodo che confronta (per contenuto) due borsellini + * @param other Altro borsellino con cui viene confrontato l'attuale + * @return True se i due borsellini contengono le stesse monete, false se non soddisfa questa condizione + */ + public boolean sameCoins(Purse other) { + if(this.actualSize == other.actualSize) { + String[] copy = new String[actualSize]; + for(int i = 0; i < actualSize; i++) { + copy[i] = other.coins[i]; + } + + for(String coin : this.coins) { + for(int i = 0; i < actualSize; i++) { + if(coin == other.coins[i]) { + copy[i] = ""; + break; + } + } + } + for(String coin : copy) { + if(coin != "") return false; + } + return true; + } + return false; + } + + /** + * Metodo toString che restituisce i valori delle monente nel borsellino + * @return Testo che indica le monete contenute nel borsellino + */ + @Override + public String toString() { + String text = "Purse["; + + for(int i = 0; i < actualSize; i++) { + if(i != 0) text += ","; + text += coins[i]; + } + + text += "]"; + + return text; + } +} diff --git a/7.x/P7.1,2,3,4,5 Purse/Purse senza arraylist/PurseTester.java b/7.x/P7.1,2,3,4,5 Purse/Purse senza arraylist/PurseTester.java new file mode 100644 index 0000000..d964841 --- /dev/null +++ b/7.x/P7.1,2,3,4,5 Purse/Purse senza arraylist/PurseTester.java @@ -0,0 +1,21 @@ +public class PurseTester { + public static void main(String[] args) { + Purse borsellino = new Purse(50); + + Purse altroBorsellino = new Purse(50); + + borsellino.addCoin("Test1"); + borsellino.addCoin("Test1"); + borsellino.addCoin("Test1"); + borsellino.addCoin("Test"); + altroBorsellino.addCoin("Test"); + altroBorsellino.addCoin("Test1"); + altroBorsellino.addCoin("Test1"); + altroBorsellino.addCoin("Test1"); + + System.out.println(borsellino.sameCoins(altroBorsellino)); + + System.out.println(borsellino.toString()); + System.out.println(altroBorsellino.toString()); + } +} \ No newline at end of file