/ / ¿Cómo usar la secuencia de escape Unicode con variables? - Java, Unicode, errores de compilación, Unicode-escapes

¿Cómo usar la secuencia de escape Unicode con variables? - Java, Unicode, errores de compilación, Unicode-escapes

Este es el código que actualmente tengo que concatenar a luego b, luego c, y así sucesivamente en un bucle (número de veces escaneado) usando java:

public String toString()
{
String answers = "";
int numChoices = choices.length;
char letter;
String result;
int letterNum = 0061;
while (numChoices > 0)
{
letter = "u" + letterNum;
result  = letter + ") " + choices[choices.length-numChoices] + "n";
answers += result;
numChoices --;
letterNum ++;
}

return question + "n" + answers;
}

Pensé que las secuencias de escape de Unicode serían mi mejor opción, pero no funcionó como lo intenté, así que obviamente estoy haciendo algo mal. ¿Cómo puedo solucionar esto?

El error que estoy recibiendo es:

MultChoice.java:40: illegal unicode escape
letter = "u" + letterNum;

Respuestas

1 para la respuesta № 1

Los escapes de Unicode son procesados ​​por javac, muy Al principio de la compilación, antes de analizar. El compilador nunca ve escapes de Unicode, solo puntos de código. Por lo tanto, no puede usarlos en tiempo de ejecución. En su lugar, intente esto:

public String toString()
{
String answers = "";
int numChoices = choices.length;
char letter = "a";
String result;
while (numChoices > 0)
{
result  = "" + letter + ") " + choices[choices.length-numChoices] + "n";
answers += result;
numChoices --;
letter ++;
}

return question + "n" + answers;
}

UN char es solo un entero de 16 bits sin signo, por lo que puede hacer todas las cosas de enteros normales con él, como incremento. No hay necesidad de separar int--"a" y (char) 0x61 son lo mismo


0 para la respuesta № 2

El valor de letterNum es 49 (61 en octal), por lo que se convierte en "u49", lo cual no es válido.

Posiblemente se suponía que usaras 0x0061, y luego convertirlo en un String utilizando Integer.toHexString(letterNum).

Edit: Parece que no puedes crear un String utilizando "u" + something.

Por lo tanto, una forma posible es Character.toString((char) letterNum).