/ / Todos los métodos de Java funcionan para una cadena excepto para devolver la cadena - java, cadena

Todos los métodos de Java funcionan para una cadena, excepto para devolver la cadena - java, cadena

por alguna razón, puedo hacer casi cualquier método para una cadena. Esto incluye:

* Obtener la longitud de la cadena

* Añadiendo a la cadena

* Usando subcadenas

* Y probablemente todo lo demás

Excepto, no puedo obtener el valor de la cadena, excepto cuando utilizo mi drawString Método para dibujar a la pantalla en lwjgl. Aquí está mi código antes de que explique el problema.

public static boolean chatOn = false;
public static String text = "";
public static float typetimer = 0;
public static int ctrltimer = 0;
public static boolean runcmd = false;

public static void chat() {
if (Keyboard.isKeyDown(Keyboard.KEY_TAB)) {
if (ctrltimer < 0) {
chatOn = !chatOn;
Keyboard.destroy();
try {Keyboard.create();} catch (LWJGLException e) {}
ctrltimer = 10;
}
}
ctrltimer -= Game.delta;
typetimer -= Game.delta;
if (chatOn) {
//try {text.replace(null, "happy");} catch(NullPointerException e) {}
System.out.println(text);//print to console, dosen"t
Text.drawString(text, 0, 0);//write the text on the screen with my draw method, does work
System.out.println(text);//print to console, dosen"t, yet the one drawstring worked
if (typetimer < 0) {
while (Keyboard.next()) {
try {
if (Keyboard.getEventKey() == Keyboard.KEY_BACK) {
text = text.substring(0, text.length()-1);
typetimer = 1;
System.out.println(text);//print to console, doesn"t
}
else if (Keyboard.getEventKey() == Keyboard.KEY_RETURN) {
System.out.println(text);//print to console, doesn"t
runCommand();
text = "";
chatOn = false;
}
else {
System.out.println(text);//print to console, doesn"t
text = text + Keyboard.getEventCharacter();
}
typetimer = 10;
} catch(Exception e){

}
}
}
}
}

public static void runCommand() {
String command = text;
System.out.println(command);//print to console, doesnt
if (command.startsWith("time")) {
try {
String[] time = new String[1];
time = command.split(" ", 0);
Camera.nighttimeASecond = Integer.parseInt(time[0]);
} catch (Exception e){
System.out.println("could not set time");
}
}
}

Si lees mis notas dentro del código, puedes ver dónde he puesto print métodos y drawString método. los print los métodos no imprimen nada y, a veces, pueden imprimir las primeras palabras de la cadena, aunque drawString El método funcionó bien. Gracias - Tyler

Respuestas

0 para la respuesta № 1

Si System.out.println(text); esta vacio antes Text.drawString(text, 0, 0); se llama, entonces text debe estar vacío cuando Text.drawString() se llama. Debieras siga mattias "sugerida guía de depuración y descubra dónde está ocurriendo su problema (o agregue algunos System.out.println()s siguiente text a través de su código y rastrearlo si es particularmente perezoso: p). Sin echar un vistazo a su Text clase, estaría dispuesto a apostar a que la cadena que se va a imprimir nunca se establece, y Text está imprimiendo una cadena estática, o que la cadena que se va a imprimir está siendo modificada por la Text clase en si

A juzgar por:

String command = text;
System.out.println(command);//print to console, doesnt

text nunca se está estableciendo