Progetto - Indovina Parole

di il
9 risposte

Progetto - Indovina Parole

Il fatto che non mi restituisce i caratteri, che ha trovato nell'array frase, dove sbaglio di preciso???

package progetto8.oop.com;
import java.util.*;

public class IndovinaParole {
	
		/*Si consideri una classe che può essere usata per un gioco in cui si deve indovinare
		 * una parola, indicando le diverse lettere in essa contenute. La classe deve avere i seguenti
		 * attributi:
		 * - la parola da indovinare
		 * - le lettere scoperte, in cui ciascuna lettera non ancora scoperta è sostituita da un
		 * punto interoggativo. Per esempio, se la parola segreta è abracadabra e le lettere a,b ed e sono state
		 * indovinate dai giocatori, la parola sarà ab?a?a?ab?a;
		 * - il numero di tentativi fatti
		 * - il numero di tentativi non corretti.
		 * 
		 * La classe avrà i seguenti metodi:
		 * - indovina(c) - prova a indovinare se la lettera c è parte della parola;
		 * - getparolascoperta - restituisce una stringa che contiene le lettere indovinate nelle loro corrette
		 * posizioni e le lettere non ancora scoperte sostituite con un punto interrogativo;
		 * - getparoladaindovinare - restituisce la parola indovinare
		 * - getnumerotentativi - restituisce il numero di tentativi
		 * - isindovina - resituisce vero se la parola è stata indovinata.*/
	
	
	private String[] frase = new String[1];
	private int tentativiFatti, tentativiNonCorretti;
	
	
	
	

	
	





	public String[] input(){
		Scanner in = new Scanner(System.in);
		
		System.out.println("Inserisci una frase: ");
		for(int i=0; i < this.frase.length; i++){
			frase[i] = in.nextLine();
		}
		return frase;
	}
	
	
	
	public String[] indovina(){
		String l = "";
		char [] c = {'a','b','c','d','e','f','g','h','i','l','m','n','o','p','q','r','s','t','u','v','z'};
		for(int i= 0; i < this.frase.length; i++){
			for(int y= 0; y < c.length; y++){
				if(frase[i].charAt(c[y]) >= 0) // in pratica mi deve restituire i caratteri che trova nell'array Frase.
					System.out.println(frase[i]);
					
			}
		}
		
		return frase;
		
	}
	
	
}


9 Risposte

  • Re: Progetto - Indovina Parole

    L'ho fatto in questo modo:

    Ma non funziona, come mai???
    
    
    	public String indovina(){
    		String nuova = "";
    		
    		for(int i= 0; i < frase.length(); i++){
    			if(frase.substring(i, 1) == "a")
    				nuova = nuova + "-";
    			else if(frase.substring(i, 1) == "b")
    				nuova = nuova + "-";
    			else if(frase.substring(i, 1) == "c")
    				nuova = nuova + "-";
    			else if(frase.substring(i, 1) == "d")
    				nuova = nuova + "-";
    			else if(frase.substring(i, 1) == "e")
    				nuova = nuova + "-";
    			else if(frase.substring(i, 1) == "f")
    				nuova = nuova + "-";
    			else if(frase.substring(i, 1) == "g")
    				nuova = nuova + "-";
    			else if(frase.substring(i, 1) == "h")
    				nuova = nuova + "-";
    			else if(frase.substring(i, 1) == "i")
    				nuova = nuova + "-";
    			else if(frase.substring(i, 1) == "l")
    				nuova = nuova + "-";
    			else if(frase.substring(i, 1) == "m")
    				nuova = nuova + "-";
    			else if(frase.substring(i, 1) == "n")
    				nuova = nuova + "-";
    			else if(frase.substring(i, 1) == "o")
    				nuova = nuova + "-";
    			else if(frase.substring(i, 1) == "p")
    				nuova = nuova + "-";
    			else if(frase.substring(i, 1) == "q")
    				nuova = nuova + "-";
    			else if(frase.substring(i, 1) == "r")
    				nuova = nuova + "-";
    			else if(frase.substring(i, 1) == "s")
    				nuova = nuova + "-";
    			else if(frase.substring(i, 1) == "t")
    				nuova = nuova + "-";
    			else if(frase.substring(i, 1) == "u")
    				nuova = nuova + "-";
    			else if(frase.substring(i, 1) == "v")
    				nuova = nuova + "-";
    			else if(frase.substring(i, 1) == "z")
    				nuova = nuova + "-";
    			else
    				nuova = nuova + "+";
    		}
    		return nuova;
    		
    		
    	}
    
    
    
    
    
  • Re: Progetto - Indovina Parole

    Il contenuto delle stringhe (e degli oggetti in generale) si confronta con equals() .... NON con == (che si basa solo sulla "identità" degli oggetti).

    Ma a parte questo non ho compreso i termini dell'esercizio: cosa deve indovinare?
  • Re: Progetto - Indovina Parole

    In pratica, il programma deve funzionare in questo modo:

    Inserisci una frase:
    ciao

    indovina parola della frase:
    c___

    tentativi fatti = 1

    indovina parola della frase:
    i___


    tentativi fatti = 2

    indovina parola della frase:

    f___

    tentativi non fatti: 1

    ecc..
    finchè da in output la parola corretta che hai scoperto, tipo il gioco dell'impiccato.


    ho corretto il codice del metodo indovina, senza equals.
    
    public String indovina(){
    		String nuova = "";
    		
    		for(int i=0; i < nuova.length(); i++){
    			
    			if(frase.substring(i, i+1) == "a")
    			    nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "b")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "c")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "d")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "e")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "f")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "g")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "h")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "i")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "l")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "m")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "n")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "o")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "p")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "q")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "r")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "s")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "t")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "u")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "v")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "z")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else
    				nuova = nuova + "-" + frase.substring(i, i+1);	
    		}
    		return nuova;
    		
    	}
    
    
    
    
    
  • Re: Progetto - Indovina Parole

    
    public String indovina(){
    		String nuova = "";
    		
    		System.out.println("Inserisci la parola da indovinare: ");
    		nuova = in.nextLine();
    		
    		for(int i=0; i < nuova.length(); i++){
    			
    			if(frase.substring(i, i+1) == "a")
    			    nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "b")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "c")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "d")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "e")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "f")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "g")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "h")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "i")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "l")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "m")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "n")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "o")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "p")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "q")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "r")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "s")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "t")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "u")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "v")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "z")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else
    				nuova = nuova + "-" + frase.substring(i, i+1);	
    		}
    		return nuova;
    		
    	}
    
    
    
    
    
  • Re: Progetto - Indovina Parole

    Codice corretto:
    
    public String indovina(){
    		String nuova = "";
    		
    		System.out.println("Inserisci la parola da indovinare: ");
    		nuova = in.nextLine();
    		
    		for(int i=0; i < frase.length(); i++){
    			
    			if(frase.substring(i, i+1) == "a")
    			    nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "b")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "c")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "d")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "e")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "f")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "g")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "h")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "i")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "l")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "m")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "n")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "o")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "p")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "q")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "r")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "s")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "t")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "u")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "v")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else if(frase.substring(i, i+1) == "z")
    				nuova = nuova + "-" + frase.substring(i, i+1);
    			else
    				nuova = nuova + "-" + frase.substring(i, i+1);	
    		}
    		return nuova;
    		
    	}
    
    
    
  • Re: Progetto - Indovina Parole

    robot ha scritto:


    Codice corretto:
    Corretto??? Ma se continui ad usare == "a" che è inappropriato.

    E comunque, scusa, quale è il senso/utilità di un "mega" if-else come quello che hai scritto??
  • Re: Progetto - Indovina Parole

    Che in paratica, deve cercare in una frase, ogni lettera indovinata.

    esempio:
    hello

    se io scrivo la lettera: h

    mi deve stampare h????

    se io scrivo la lettera: l

    mi deve stampare h?ll?


    E' questo lo scopo del programma.

    Ma non so come devo progettare.

    ho creato solo due metodi:
    metodo input per inserire i dati
    metodo indovina per cercare la parola corretta, che è incompleta
  • Re: Progetto - Indovina Parole

    robot ha scritto:


    esempio:
    hello

    se io scrivo la lettera: h

    mi deve stampare h????
    Fai un ciclo for sulla lunghezza della stringa da indovinare (es. "hello"), con i da 0 a < str.length(). Con charAt(indice) prendi il carattere i-esimo. Se è uguale al carattere inserito, ok, altrimenti sai che risulterà un '?'.
  • Re: Progetto - Indovina Parole

    Qui, ho scritto in questo modo, però ancora non ho incluso tutte le lettere dell'alfabeto, ma c'è qualcosa che non funziona.
    
    public String indovina(){
    		
    		String nuova = frase; //copia il contenuto della frase
    		char lettera;
    		
    		lettera = frase.charAt(0); //inizia da 0 il contenuto nella stringa frase
    		
    		System.out.println("Inserisci la parola da indovinare: ");
    		nuova = in.nextLine();
    		
    		for(int i = 0; i < frase.length() - 1; i++){ // scorri fino alla (i - 1)
    			if(lettera == 'a')
    				System.out.println(lettera + "-" + frase);
    			else
    				System.out.println(lettera + "?");
    		}
    		return frase;
    	}
    
    
    
    
    Output:
    Inserisci una frase:
    ciao
    Inserisci la parola da indovinare:
    c
    c?
    c?
    c?
    ---------------------------------------------------------------------
    Non deve fare in questo modo, se inserisco la lettera "c", deve stampare cosi:
    c???

    se la lettera non è giusto, deve stampare:
    ????
Devi accedere o registrarti per scrivere nel forum
9 risposte