Converter boolean para int

7 respostas
java
A

Estou iniciando no universo Java e estou fazendo um exercício onde tenho de converter booleam para inteiro, mas até o momento sem sucesso, pois utilizei o operador ternário, mas quando o teste chega no operador lógico “!” da um erro.

boolean p, q;
  int pInt, qInt;

  System.out.println("P\tQ\tAND\tOR\tXOR\tNOT");

  p = true; q = true;
  pInt = (p) ? 1 : 0;
  qInt = (q) ? 1 : 0;
  System.out.print(pInt +"\t"+ qInt +"\t");
  System.out.print((pInt & qInt) +"\t"+ (pInt | qInt) +"\t");
  System.out.println((pInt ^ qInt) +"\t"+ **(!pInt)**);

Único lugar que da o erro é (!pInt)

7 Respostas

L

Dá erro pois a variável pInt não é um boleano.

A

sim sim, em cima disso achei que os demais testes que tivesse que retornar zero daria erro, mas rodou. por exemplo o teste (pInt ^ qInt) a saída dele foi zero.

S

Mano você está tentando executar do jeito que está copiado ai?
A linha:

System.out.println((pInt ^ qInt) +"\t"+ **(!pInt)**)

deveria estar concatenando strings mas (!pInt) não é uma string, mas “("+!plnt+")” é uma string…
Sendo assim acho que o correto seria essa linha ser assim:

System.out.println((pInt ^ qInt) +"\t"+ "**("+!pInt+")**")
A

não compilou.

S

Quanto ao !pInt é como o amigo @Lucas_Camara acima disse o “!” é um sinal de negação que não se aplica a um inteiro nesse caso você pode negar o “p” e o “q” que são booleanos, mas “pInt” e o “qInt” não podem ser negados por serem int, logo, não irá rodar.

A

sim isso entendi, mas minha curiosidade é pq os outros testes rodaram? & | ^ ? e retornaram os valores que foram testados no ternário. Mas vcs conhecem outra maneira de converter?

L

A ? funcionou pq é um simples IF ternário: (se true) ? retorne isso : senão retorne isso;

O outros (&, |, ^) são operadores binários (Bitwise and Bit Shift Operators), e funcionam para tipos inteiros.

E para usar o !, você terá que tratar plnt assim: !((pInt == 1) ? true : false)).

Criado 15 de julho de 2016
Ultima resposta 15 de jul. de 2016
Respostas 7
Participantes 3