String.format

3 respostas
C

[color=darkblue]System.out.println (String.format(""+ a +"")); [/color][color=black]Se inserir esta linha desta forma o programa corre normalmente, no entanto se a inserir forma seguinte [/color] [color=darkblue]System.out.println (String.format("%01X",""+ a +""));[/color] o programa dá-me este erro

Exception in thread main java.util.IllegalFormatConversionException: x != java.lang.String

at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4011)

at java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2725)

at java.util.Formatter$FormatSpecifier.print(Formatter.java:2677)

at java.util.Formatter.format(Formatter.java:2449)

at java.util.Formatter.format(Formatter.java:2383)

at java.lang.String.format(String.java:2781)

at contadora.main(contadora.java:14)

Deduzo que me falte, qualquer coisa o quê? Obrigado!

3 Respostas

H

acho que o erro ocorre porque o segundo parâmetro que foi passado esta errado, a linha deveria ser:

System.out.println (String.format(""+"%"+""+"01X",a));

faz toda a formatação na primeira parte e após a vírgula, passar só a variável entende.

H

e no caso que se usar mais variáveis, mesma coisa, toda a formatação no primeiro parâmetro, e depois as variáveis.

System.out.println (String.format("%d"+""+"%d"+"%d"+""+"%d",a,b,c,d));
C

Seguindo o 1º exemplo dá 5 erros. Na minha ignorância julgo que o problema tem a ver com a matriz, porque tenho outro projecto identico sem matriz e ele corre normalmente com esta formatação

[color=green]System.out.println(String.format("%08X",x));[/color]

import java.util.<em>;

import java.util.regex.</em>;

import java.text.<em>;

import java.lang.reflect.</em>;
public class contadora

{

public static void main (String[] args)

{

long arrai [][]= new long [100][1];

for (int a=00; a <=255; ++a)
for (int b =0; b < 1; ++b)

System.out.println (String.format(""+ a +"" ));

}
}

Este é o inicio do meu projecto, pode dizer-se o programa está a correr dentro do arrai?

No seguimento deste projecto pretendo incluir o seguinte código que gentilmente um user de outro forum fez para mim, mas na base de um array préviamente criado e funciona na perfeição!

Pattern pat = Pattern.compile ("(\d)\1{3,}");

for (int i = 0; i < x.length; ++i) {

String numero = Long.toString (x[i]);

if (pat.matcher (numero).find()) {

System.out.println (""+ numero +"");

 que aqui o array / matriz (?) está a ser preenchido  (daí eu perguntar se o programa está a correr dentro do array/matriz)  e eu pretendia que esta busca para eliminação actuasse ao mesmo tempo se é que é possivel. Eu não tenho qualquer base de programação, em duas semanas dei umas voltas por C++ e Java e  consegui fazer a 1ª parte, e julgo que ontem percebi o que é uma matriz, por isso, solicito a ajuda possivel, na adquação do 2º código ao primeiro ou a melhor forma de concluír este programa, que pretendo crie sequências hex de 12 digitos, onde não são permitidos mais de 4 digitos iguais seguidos. Obrigado.
Criado 19 de dezembro de 2008
Ultima resposta 20 de dez. de 2008
Respostas 3
Participantes 2