Atribuir um valor de um inteiro a um char

2 respostas
A

Gente esse programa esta errado?

static boolean minusc (char x)
{return (x >= 'a')&&(x<='z');}

static char minusc_maiusc (char x)
{ int d = 'A' - 'a';

if (minusc (x)) return (x+d); //   <------------esta linha que eu tenho duvida
	else return x;
}

O Esse codigo que eu coloquei foi tirado de um livro, eu tentei executar so que deu erro ao compilar com a seguinte mens.:

Caracter.java:25: possible loss of precision
found: int
required: char
if (minusc(x)) return (x+d);
^

Minha dúvida relacionada a isso é a seguinte:

Eu posso fazer por exemplo:

chax x = 100  // 100 é equivalente a letra d

so que se eu fazer isso da maneira seguinte nao compila:

int d  = 100

char x = d   // da o mesmo erro

Outro exemplo seria:

char letra = 'A';   
letra++;  //     <-----isso da certo

mas se eu faço isso tb nao compila;

char letra = 'A'    
letra= letra + 1      // nao compila

como entao q eu poderia atribuir um valor de um inteiro a um char????

2 Respostas

_Renatu

talvez um cast resolva seu problema, nao sei…

mas de toda forma a classe Character faz essa conversao que voce quer…

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Character.html

diego2005

Quando você faz:

chax x = 100;

O compilador sabe que 100 é um valor constante, e que cabe em um tipo char. Agora quando você faz:

int d = 100; char x = d;

O compilador não tem como saber qual o valor da variável d, e como um int é maior que um char, dá erro.

Agora observe o seguinte:

final int d = 100; char x = d;

Agora não dá erro, pq a variável d é constante, então o compilado sabe que a atribuição é válida.

T+

Criado 28 de outubro de 2007
Ultima resposta 28 de out. de 2007
Respostas 2
Participantes 3