[RESOLVIDO]Problema pra imprimir linha

4 respostas
L

To com uma dúvida nesse código

import java.util.Scanner;

public class Forca {

  public static void main(String[] args) {

                    Scanner s = new Scanner(System.in);
 
                    Traços T = new Traços();

                    int forca = 1, cont = 0, perder = 0, vencer = 0;
                     
                    String[] traços = {"_ ", "_ ", "_ ", "_ "};        
                    
                    System.out.println("***Jogo da forca***");
                    System.out.println("Digite uma letra");
                    
                             T.exibe(traços);

                    String letrasDigitadas[] = new String[26];                 
 
                    String[] palavra = {"m", "a", "t", "o"};

                    String a = s.nextLine();
       
                       for (int i = 0; i < palavra.length; i++) {
                          if (palavra[i].equals(a)) {
                           System.out.println("Letra certa.. digite outra");
                             break;
                                } else {
                                   if (palavra[i]!=(a)) {
                           System.out.println("Letra errada");  
                                }   
                             } 
                          }
                            
                         
                      
                    

  }
}

       class Traços {
   
                       void exibe(String[] traços) { 

                         for(int i = 0; i < traços.length; i++) {
 
                            System.out.print(traços[i]);
                       
                      }
                     
                            System.out.println("");        
           
                   } 
               }

Quando compilo, a linha 32
é imprimida 3 vezes no programa, gostaria que alguem me dissesse o porque.
Valeu!

4 Respostas

I

Precisa dar uma olhada na logica aplicada ao seu programa.

Você deve ter digitado a letra “o” no pront, ai o que ele faz passa pelo array de letres até encontrar a letra, sendo que as 3 primeiras não são iguais ele vai imprimir 3x a mensagem de erro.

fabiocortolan

Sua lógica está incorreta pq dessa forma todas as vezes q passar pelo seu if e a letra for incorreta ele cai no if com a mensagem "Letra errada", acredito q a forma mais simples para resolver isso seria vc colocar uma variável boolean p/ saber se a letra está correta e imprimir a mensagem depois da finalização do loop, segue exemplo:

// Variável que vai verificar o resultado da inserção
boolean resultado = false;

// Percorre o array e verifica se a letra está correta
for (int i = 0; i &lt; palavra.length; i++) {
    if (palavra[i].equals(a)) {
        resultado = true;
        break;
    } else {
        resultado = false;
    }
}

// Verifica o acerto ou erro e imprime a mensagem correta
if (resultado) {
    System.out.println("Letra certa.. digite outra");
} else {
    System.out.println("Letra errada");
}
L

Nossa caras, valeu mesmo.
Vou estudar mais lógica de programação :smiley:
Abraço.

fabiocortolan

Não esqueça de marcar o tópico como [RESOLVIDO] blz! :wink:

Criado 27 de março de 2013
Ultima resposta 27 de mar. de 2013
Respostas 4
Participantes 3