Quote Originariamente inviata da Lucym80 Visualizza il messaggio
Ciao, allora, prima di tutto quel che volevo fare è questo: siccome mi hanno detto che la classe random funziona solo per i numeri, allora dovevo Abbinare un numero a carta, uno a forbbici e un altro numero a sasso.
E fin qua tutto ok.

Poi, volevo che il giocatore virtuale, quindi random, avesse un nome: ecco perché ho scelto rudi.
Ok.

poi volevo dire che la prima scelta: doveva essere dell’utente e pensavo di dover mettere scelta e sceltaRudy a zero per poter far inserire i dati all’utente.
Ok, circa.
Se vuoi far scegliere prima all'utente umano, devi per prima cosa fargli inserire un valore... e questo valore non lo devi buttare via (come stai facendo), ma lo devi immagazzinare in una variabile di tipo intero.

Quando tu scrivi:
codice:
scanner.next();

Stai mettendo "in pausa" l'esecuzione in attesa di un input da parte dell'utente... ciò che digita l'utente, però, lo butti via. Il metodo next() della classe Scanner restituisce una stringa, ma tu non la stai assegnando ad una variabile, quindi viene semplicemente buttata via. Ora, hai due possibilità:

1) Leggere una stringa e farne il parsing per vedere se ciò che l'utente ha digitato è effettivamente un numero
2) Leggere direttamente un intero usando nextInt() (ma dovrai occuparti di consumare l'invio residuo che rimane nel buffer).

In ciascuno di questi casi, il valore letto lo dovrai assegnare ad una variabile, per non perderlo.

codice:
int sceltaUtente = scanner.nextInt();
scanner.nextLine();   // rimuovo l'INVIO residuo dal buffer

Dopo aver letto l'input dall'utente si passerà all'estrazione casuale del numero da parte di Rudy. E si effettueranno tutte le considerazioni del caso.

C'è, comunque, della sequenzialità nelle operazioni: se il tuo scopo è quello di far scegliere prima l'utente e poi il computer, allora le operazioni vanno fatte in quest'ordine, non al contrario come stavi cercando di fare tu inizialmente.

E' chiaro, comunque, che la classe Random andrebbe usata nel metodo sceltaRudy(), non al di fuori e decisamente non DOPO che il metodo è già stato invocato per nulla.

Quindi, rivedi il tuo codice e prova ad abbozzarlo secondo la sequenzialità delle operazioni da fare (poco importa che all'inizio funzioni, cerca di chiarirti le ideee innanzututto sull'ordine in cui eseguire le operazioni e sul come usare le istruzioni di assegnazione per non buttare via le letture).


Allora mi aiuta a capire come si fa nello specifico? Grazie, ma sono all’inizio con Java e non ho neanche basi di programmazione.
Ti consiglio di seguire il tutorial di Oracle dall'inizio così da avere chiaro come funzionano le cose all'interno di un programma Java: le cose di base come la sequenzialità delle operazioni, le istruzioni di assegnazione, le chiamate a metodi, ecc. altrimenti non farai molta strada in tal senso.


Ciao.