Usando DecimalFormat

6 respostas
jemoliveira

Ola pessoal, estou com um problema, alguem pode me ajudar?

int i = 1203;

		DecimalFormat meuFormato = new DecimalFormat( "0000" );
		
		String hm = Integer.toHexString(i);
		

		String t26 = "" + hm.substring(0,2) + ":" + hm.substring(2,4);
		
		
		System.out.println("i = " + meuFormato.format(t26));

e me da esse erro

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 4
	at java.lang.String.substring(Unknown Source)
	at Teste2.main(Teste2.java:17)

6 Respostas

Bravox

as string começam com zero portanto a string que vc está passando vai de 0 a 3 !!

String t26 = "" + hm.substring(0,1) + ":" + hm.substring(2,3);

bravox

jemoliveira

Putz mais ainda não funcionou, agora da um erro assim

Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given Object as a Number
	at java.text.DecimalFormat.format(Unknown Source)
	at java.text.Format.format(Unknown Source)
	at Teste2.main(Teste2.java:18)
Bravox

o que vc está querendo fazer ?

bravox

jemoliveira

eu tenho um aparelho que é conectado a minha porta serial…quero ler as horas do aparelho que é um int.
tenho q converter pra String pra aparecer meus 4 digitos na minha tela

T

O problema é que Integer.toHexString() não põe zeros à esquerda.
Por exemplo, se i = 0xCA, então String hm vai valer “CA”, não “00CA”, “000000CA” ou outra coisa qualquer. Portanto o “substring” vai dar errado mesmo.
Se quer algo que tenha os zeros à esquerda (não sei quantas posições você quer :stuck_out_tongue: ), então use algo como:

String hm = String.format ("%08X", i);

(isso se você quer 8 posições)

Bravox

A classe DecimalFormat e usada geralmente para formatar numero decimais mas acredito que no seu caso da para fazer assim

int i = 1203;
		
		String hm = Integer.toString( i );
		
		String t26 = "" + hm.substring(0,2) + ":" + hm.substring(2,4);
		
		System.out.println( t26 );

bravox

Criado 19 de setembro de 2006
Ultima resposta 19 de set. de 2006
Respostas 6
Participantes 3