2011-09-29 26 views
5

Estoy intentando construir una cadena en Java que tendrá un máximo de 3 longitudes y como mínimo 1 largo.Java null char en la cadena

Estoy construyendo la cadena dependiendo del contenido de una matriz de enteros y quiero dar como resultado un carácter nulo en la cadena si el contenido de la matriz es -1. De lo contrario, la cadena contendrá una versión de carácter del entero.

for (int i=0; i < mTypeSelection.length; i++){ 
     mMenuName[i] = (mTypeSelection[i] > -1 ? Character.forDigit(mTypeSelection[i], 10) : '\u0000'); 

    } 

Esto lo que tengo hasta ahora, pero cuando la salida que la cadena de conjunto {0, -1, -1} en lugar de sólo conseguir la cadena "0" Estoy recibiendo cadena "0".

¿Alguien sabe cómo puedo obtener el resultado que quiero?

Gracias, m

+0

¿Puede proporcionar el código completo? ¿Cómo está imprimiendo el resultado? – srikanta

+1

Parece que el comportamiento que dices que quieres es lo que está sucediendo: terminas con caracteres nulos en las posiciones 2 y 3 en la cadena final. Los caracteres nulos no terminan la cadena en Java. ¿Quieres truncar la cadena en el primer -1 en la matriz? –

Respuesta

6

Voy a suponer que desea terminar la cadena en el primer carácter nulo, como sucedería en C. Sin embargo, puede tener caracteres nulos dentro de cadenas en Java, por lo que ganó No finalice la cadena. Creo que el siguiente código producirá el comportamiento que busca:

StringBuilder sb = new StringBuilder(); 
for (int i=0; i < mTypeSelection.length; i++){ 
    if(mTypeSelection[i] > -1) { 
     sb.append(Character.forDigit(mTypeSelection[i], 10)); 
    } else { 
     break; 
    } 
} 
String result = sb.toString(); 
+0

Gracias eso es brillante. – mAndroid

+0

De nada :) –