Inizio modifiche a Purse senza ArrayList
This commit is contained in:
parent
f3380f8888
commit
a4d3667682
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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());
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue