Poi noto alcuni errori concettuali, per sicurezza ti avverto:
Codice:
public Monetina()
{
this.faccia = faccia;
}
Qui quello che stai facendo č settare this.faccia al valore di this.faccia, ovvero al suo stesso valore dato che non ci sono altri identificatori "faccia" nello scope del metodo; se all'inizio non č definito continuerą a non essere definito.
Codice:
public boolean lancia( Monetina m )
{
double d = Math.random();
if( d < 0.5 )
m.faccia = true;
else
m.faccia = false;
}
Di questo te ne ho gią parlato sopra, č sbagliata l'idea di "una moneta che lancia un' altra moneta": hai due possibilitą:
a) una moneta espone "lancia"
b) il metodo statico "lancia" svolge le operazioni su una determinata moneta
Poi nello stesso metodo avrai anche un errore di compilazione, dato che dichiari di restituire un boolean ma non lo restituisci, per cui ti basta aggiungere prima della chiusa graffa "return faccia;".