Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Só uma observação.

Fiz meu código um pouco diferente testando apenas se é menor que 10 (testar 10 vezes, 0 a 9), e coloquei pra imprimir uma mensagem com o ultimo valor da variavel contador fora do while, mas notei que estava dando um erro, que na verdade acabei descobrindo que é uma forma de testar do java, quando eu coloco >= o java testa se é maior e igual, quando eu coloco só o = ele não testa se é igual, testa na verdade, mas se é booleano, mas não testa da forma que eu achei que seria, no caso se é igual a 10, da variavel do tipo inteiro. Testei o == e ai percebi que compilou. Era só isso, só essa particularidade mesmo..

Segue código.


public class TestaWhile {
    public static void main(String[] args) {
        int contador = 0;
        while (contador < 10) {
            System.out.println("Contador vale "+contador);
            contador ++;
            //if (contador = 10) { se colocar só o operador =, ele testa booleano e não inteiro. 
            if (contador == 10) {

                System.out.println("Contador terminado: "+contador);
            }
        }
    }
}
2 respostas
solução!

Opa Luis, tudo bem? Na verdade o = é atribuição de valor, lembra? Essa é uma das primeiras observações no curso.

Pra testar igualdade, usa-se dois sinais de igual (==).

No Java, usar apenas um igual dentro de um if, não compila por que o java tenta "interpretar" isso como uma expressão boleana, que resulta em verdadeiro ou falso. Como uma atribuição não pode ter convertida dessa forma, ele acusa erro.

:)

O bom de usar classes Wrappers, é que elas te dão um monte de métodos legais como o equals. Mas nesse caso, realmente a maneira mais fácil é usar o ==, pois se trata de um tipo primitivo.