Contador não funciona

Eu estou fazendo o curso de Java Basico da Loiane Groner.
Mas estou com dificuldades de resolver um dos exercícios.
O contador simplesmente não funciona… Se pedir para imprimir o contador no final do código, ele vai retornar 0.

import java.util.Scanner;

public class Exer20 {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        int contagem = 0;        
        
        System.out.println("Telefonou para a vítima? (S ou N)");
        String telefonou = scan.next();
        if(telefonou=="s" || telefonou=="S"){
            contagem++;
        }
        
        System.out.println("Esteve no local do crime? (S ou N)");
        String esteve = scan.next();
        if(esteve=="s" || esteve=="S"){
            contagem++;
        }
        
        System.out.println("Mora perto da vítima? (S ou N)");
        String moraProximo = scan.next();
        if(moraProximo=="s" || moraProximo=="S"){
            contagem++;
        }
        
        System.out.println("Devia para a vítima? (S ou N)");
        String devia = scan.next();
        if(devia=="s" || devia=="S"){
            contagem++;
        }
        
        System.out.println("Já trabalhou para a vítima? (S ou N)");
        String trabalhou = scan.next();
        if(trabalhou=="s" || trabalhou=="S"){
            contagem++;
        }
        
        switch(contagem){
        case 0: 
        case 1:System.out.println("Inocente."); break;
        case 2:System.out.println("Suspeito."); break;
        case 3: 
        case 4:System.out.println("Cúmplice."); break;
        case 5:System.out.println("Assassino."); break;
        }
    }

}

Ps.: Fora a questão da contagem, a organização do código está boa ou preciso melhorar algo?

Acredito que o problema seja o uso do operador == para comparar Strings.

Quando estiver lidando com string em Java e quiser compará-las deve-se usar o método equals ou equalsIgnoreCase.

Sabe cada um dos ifs que você criou? Então, tente substituir os lugares que estiver assim:

if(telefonou=="s" || telefonou=="S"){
    contagem++;
}

/* ... */

if(esteve=="s" || esteve=="S"){
    contagem++;
}

Por isso aqui:

if( telefonou.equalsIgnoreCase("s") ){
    contagem++;
}

/* ... */

if( esteve.equalsIgnoreCase("s") ){
    contagem++;
}

E veja se resolve.

1 curtida

PERFEITO!

Resolveu mesmo o problema. Então o problema era só o método usado para comparar e não o contador.

Muito obrigado @wldomiciano!

1 curtida