Pode usar 'equals.()' em vetores ou '==' [RESOLVIDO]

12 respostas
L

A questão é o seguinte, não estou acertando usar equals com vetores… me ajudem

essa é uma questão de verificar gabarito, armazeno 10 string para comparar com bagarito correto…

int soma;
        String gabarito_aluno[] = new String[10]; // estou armazenando 10 lugares na mémoria
        for (int i=0;i<10;i=i+1)
          {
            gabarito_aluno [i]= JOptionPane.showInputDialog("Ent" 
                    "re Com Resposta"); // vou entrar com ao 10 luagres
          }      
        if (gabarito_aluno[0].equals(a)) //usar equals em vetores não sei mas em string é assim (string_a.equals(string_b) em vetores  como é ?????
          {//se digitar 'a', agrega um ponto res. correta                                                            
            soma = soma + 1;
          }
        if (gabarito_aluno[1].equals(b))
          {
           soma = soma + 1;
          }
        if (gabarito_aluno[2].equals(c))
          {
            soma = soma + 1; 
          }
        if (gabarito_aluno[3].equals(d))
          {
            soma = soma + 1; 
          }
        if (gabarito_aluno[4].equals(e))
          {
            soma = soma + 1; 
          }
        if (gabarito_aluno[5].equals(e))
          {
           soma = soma + 1; 
          }
        if (gabarito_aluno[6].equals(d))
          {
            soma = soma + 1; 
          }
        if (gabarito_aluno[7].equals(c))
          {
           soma = soma + 1; 
          }
        if (gabarito_aluno[8].equals(b))
          {
            soma = soma + 1; 
          }
        if (gabarito_aluno[9].equals(a))
          {
            soma = soma + 1; 
          }
        
        int total; 
        total = soma;
        JOptionPane.showMessageDialog(null, "Seu Total de Acertos Foi: "+total);

12 Respostas

pedroroxd

Bem vindo ao fórum!
Antes de postar seu código, dê uma lida aqui: http://guj.com.br/posts/list/50115.java

Use a tag [ code ] para seu código ficar mais visível.

Ex.:

String ex = "BEM VINDO!";
System.out.println(ex);
Flavio_Luiz

kra não sei… mas como vc quer saber a quantidade de acerto de um aluno… seria legal se vc usar Map gabaritoAluno
onde as key seria a numeração das questoes e os value seria a resposta do aluno.
Se vc fizer ainda outro Map gabaritoOficial só que com o gabarito oficial fica mais facil de vc fazer essa comparação depois.

wbdsjunior

tente assim:

int soma = 0;
// ...

if ("a".equalsIgnoreCase(gabarito_aluno[0])) //usar equals em vetores não sei mas em string é assim (string_a.equals(string_b) em vetores  como é ?????   
{//se digitar 'a', agrega um ponto res. correta                                                               
    soma++;
}

// ou

if (gabarito_aluno[0].equalsIgnoreCase("a")) //usar equals em vetores não sei mas em string é assim (string_a.equals(string_b) em vetores  como é ?????   
{//se digitar 'a', agrega um ponto res. correta                                                               
    soma++;
}
particularmente, prefiro a primeira.
L

Muito Obrigado wbdsjunior, resolvido o problema.

sergiotaborda

Nem equals , nem ==

Para comparar o conteudo de arrays vc usa Arrays.equals() . atenção ao plural.

String[] a = {"um" , "dó","li","tá"};
String[] b = {"um" , "dó","li","tá"};


assertTrue(Arrays.equals(a,b));

Claro que se mudar a ordem já não dá igual

J

Strings literais sempre devem estar entre aspas duplas “a”,“b”,“c”,…

wbdsjunior

sergiotaborda:
Nem equals , nem ==

Para comparar o conteudo de arrays vc usa Arrays.equals() . atenção ao plural.

String[] a = {"um" , "dó","li","tá"};
String[] b = {"um" , "dó","li","tá"};


assertTrue(Arrays.equals(a,b));

Claro que se mudar a ordem já não dá igual

bem lembrado.

mas neste caso (acho que a pergunta não foi bem formulada), o amigo leonardocp quer comprar uma String literal (“a”, por exemplo) com o valor em dado índice do array.

sergiotaborda

Ah! sim. na realidade quer saber quantas perguntas acertou.

String[] respostasCertas = {"a","b","a","d"}

String[] respostasAluno = ... // obter 

int contadorCertas = 0;
for (int i = 0; i < respostasCertas.length ; i++){
   if( respostasCertas[i].equals(respostasAluno[i]){
       contadorCertas++;
} 

}

System.out.println("Acertou " + contadorCertas + " respostas");

Usa-se equals porque o conteudo do array são strings. se fosse primitivos (int, double, etc) usa-se ==.

mais sobre comparações em java

pmlm

Se as Strings têm sempre tamanho 1, porque não usar char?

sergiotaborda

Poderia , mas ai tem que usar == e fazer conversão no JOptionPane
(ou seja, para iniciantes String é mais simples)

L

Verdade.kkkkkk

sou iniciante…

pedroroxd

Se resolveu vá ao primeiro post, clique editar e adicione [RESOLVIDO] no final do assunto do post.

Criado 2 de outubro de 2009
Ultima resposta 2 de out. de 2009
Respostas 12
Participantes 7