seleccionar caracteres de un arreglo

scb10
16 de Junio del 2005
tengo que seleccionar de una cadena de caracteres como SD00100 solo SD100 es decir que m elimine los ceros despues de sd hasta que encuentre numero pero el codigo que tengo me da de resultado lo sig

Cadena [0] =S
Cadena [1] =D
Cadena [2] =0
NOOOOO [3] =0
Cadena [4] =1
Cadena [5] =0
NOOOOO [6] =0


static char[] cadena = {'S','D','0','0','1','0','0'};

static void imprimeCadena(char[] cad) {
for (int i = 0; i < cad.length; i++) {
if (cad[i] == '0')
{
if (cad[i--] == 'D')
System.out.println("NOOOOO [" + i + "] =" + cad[i]);
else
{
if (cad[i++] == '0')
System.out.println("NOOOOO [" + i + "] =" + cad[i]);
else
System.out.println("Cadena [" + i + "] =" + cad[i]);
}//else
}//if
else
System.out.println("Cadena [" + i + "] =" + cad[i]);
}//for
}//imprime cadena

usercito
16 de Junio del 2005
Este es el codigo que te devuelve la cadena sin los ceros intermedios (siempre y cuando las cadenas sigan el patron SD + lo que sea)

char[] cad = {
'S', 'D', '0', '0', '1', '0', '0'};
String result = "SD";//aqui guardaré el resultado
//variable que controla si se sigue comprobando->será false cuando se encuentre el primer numero distinto de cero
boolean seguir = true;
int i = 2;//comienzo en dos porque 'SD' lo incluyo directamente
for (i = 2; i < cad.length; i++) {
if (seguir){//aun no he encontrado un numero!=0
if (cad[i] == '0'){//si es cero no lo añado
}else{//he encontrado el primer numero distinto de cero
seguir=false;
result += cad[i];//lo añado al string
}
}else{//a partir del primer numero!=0 los añado todos
result += cad[i];
}
System.out.println("Resultado: " + result);
} //for