Io credo che tu abbia fatto un po' di confusione, senza offesa sia chiaro. Non è sicuramente semplice se non si ha un po' di esperienza (e quella la si fa col tempo, ahimè).
Avrei bisogno anche della classe Triple, questo perché vedo che tu hai definito una classe Macchina che la estende. Non è quello che, da un punto di vista della progettazione, farei io. In verità da quello che leggo, estendere la classe Triple non è proprio necessario! Te lo chiedo perché non so di quale facoltà sia il corso, né le specifiche del progetto, hai la possibilità di utilizzare classi di utilità della libreria Java? Come ArrayList, per esempio... perché non capisco come quel codice possa funzionare!
public class Macchina extends Triple
{
int size; // CAPIENZA DELL'ARRAY DI OGGETTI TRIPLE.
…
/* COSTRUTTORE DELL'OGGETTO MACCHINA*/
public Macchina (Triple [] test)
{
test = new Triple[size]; /* CREA LO SPAZIO NELL'ARRAY DI PROVA*/
for(int i=0; i<size;i++)
{
test[i]= new Triple(currentStatus,letter,nextStatus);
firstStatus = 1; /* NON SO SE DEBBA ESSERE INIZIALIZZATO COSI :(
}
}/* FINE DEL COSTRUTTORE*/
Prima di tutto, size non è stato inizializzato, quindi la riga
test = new Triple[size];
dovrebbe darti un errore.
Inoltre, anche l'intero for ha lo stesso problema. Size, currentStatus, letter e nextStatus non sono inizializzati e quindi dovrebbero dare un errore. Inoltre, mettere la riga
firstStatus = 1;
all'interno del costrutto for è un errore semantico, quell'operazione deve essere fatta una volta sola!
Per risolvere il problema della mancata inizializzazione di questi parametri, che è fondamentale (infatti è da lì che derivano tutti i problemi), devo prima sapere se puoi, da specifiche, utilizzare classi di utilità di Java quali appunto ArrayList. Puoi?
Andiamo avanti.
Questo metodo, non è corretto.
/** METODO CHE CONSENTE LA TRANSAZIONE DA UNO STATO ALL'ALTRO DELLA MACCHINA (FATTO MALISSIMO, MI RESTITUISCE TUTTO TRANNE IL VERO VALORE :( )
public int statoRaggiunto ()
{
for (int j=0; j<stringa.length; j++)
{
for (int i=0; i<size; i++)
{
firstStatus = 1;
if(stringa[j] == test[i].getLetter())
{
firstStatus = test[i].getNextStatus();
}
}
}
return firstStatus;
}
A parte il fatto che mi sarebbe molto più chiaro tutto se mi postassi la classe Triple, vorrei porre l'attenzione sulla riga
firstStatus = 1;
che viene eseguita ogni volta che viene eseguita ogni volta che le istruzioni dell'if vengono eseguite! Quindi in pratica ogni volta che si cicla sul secondo if, la variabile firstStatus viene re-inizializzata e questo sicuramente ti sfasa tutto.
Se mi rispondi a quelle domande comunque credo che l'applicazione sia abbastanza fattibile.