
Originariamente inviata da
Ansharja
Si l'impostazione del problema è un po' confusionaria, soprattutto il confronto dentro il ciclo.
Intanto ti conviene usare un metodo che faccia il confronto e restituisca un valore booleano che vale true solo se il numero è esatto, altrimenti false.
In questo caso potrebbe sembrare superfluo, ma è sempre una buona idea creare metodi che si occupano di un singolo compito e non "intasare" il main con tutto, soprattutto quando il codice è molto lungo.
Dentro il ciclo io quindi farei qualcosa del genere:
codice:
while(vite>0)
{
System.out.println("Ti restano ancora "+vite+" vite.Prova a indovinare il numero di 5 cifre > ");
int confronto=tastiera.nextInt();
if(numeriUguali(base,confronto))
{
System.out.printl("Complimenti hai indovinato!");
return;
}
else vite--;
}
Cioè leggi il numero all'inizio del ciclo, poi richiami la funzione che ti dice se i due numeri sono uguali (a proposito nel tuo codice usi la variabile base e non si capisce da dove l'hai tirata fuori, sarebbe una buona idea che fosse un numero di 5 cifre generato casualmente).
Nella funzione che confronta l'uguaglianza dei numeri, in caso il numero non sia corretto, stampi anche il numero di cifre corrette e la loro somma.
Poi tu hai fatto un sacco di casino nel confrontare le cifre con l'operatore % , se posso consigliarti io leggerei il numero come stringa (quindi usando nextLine() e non nextInt()) , ovviamente assicurandomi che la stringa sia di lunghezza 5 e che sia effettivamente un numero.
Poi confronti una cifra alla volta utilizzando la funzione substring della classe String e convertendo il carattere letto in numero usando Integer.parseInt(laTuaCifraLetta).
E' difficile dire di più senza scrivere l'intero codice, intanto dimmi se questo ti può essere utile
