2011-09-05 12 views
5

Lo siento por la pregunta realmente estúpida, estoy aprendiendo un nuevo idioma y tomar este código:Programa Primer Certamen de Java salida incorrecta

public class Exercise01 { 
    int i; 
    char c; 

    public static void main(String[] args) { 

     Exercise01 E = new Exercise01(); 
     System.out.println("i = " + E.i); 
     System.out.println("c = [" + E.c + "]"); 
    } 
} 
/* Output: 
i = 0 
c = [ 
*/ 

Por qué la salida no produce "]" personaje? ¿Tiene algo que ver con Unicode?

PostEdited: la variable E.c no se inicializó con fines de experimentación.

+1

¿Cuál es el valor de E.c? –

+0

Se produce de mi lado. ¿Es esto todo el código? –

+0

Da el resultado esperado para mí también. – luketorjussen

Respuesta

4

Está tratando de imprimir el carácter nulo porque su char c no ha sido inicializado. es decir, \0 Curiosamente, no puede copiar y pegar fácilmente este carácter, ya que la mayoría de los códigos C lo ven como un marcador de final de cadena.

Veo el ] cuando ejecuto el código.

trate de cambiar su código con

char c = '?'; 

me da una salida de

i = 0 
c = [?] 

Una forma de reproducir este problema es ejecutar en UNIX

java Main | more 

cuales salidas

i = 0 
c = [ 
+0

esto no es una pregunta en C, esta es una pregunta de Java, y muchos usuarios de arriba me incluyen dicen que tienen la salida como se esperaba! – Rakesh

+4

La pregunta es '¿Por qué la salida no produce"] "carácter?' "Funciona para mí" no es una respuesta. Una interacción con un programa C, es una respuesta posible. –

+1

'more' es un programa escrito en C. Su uso o algo así puede causar un truncamiento de la salida. –

6

Puede ser que el lugar al que se está enviando su programa, una consola o una ventana, se confunda por el carácter U + 0000 que es el valor de E.c.

Funciona bien para mí.

Inicializa E.c y vuelve a intentarlo.

1

probablemente tiene que ver con el hecho de que no se ha inicializado E.c a nada

+3

JLS 4.12.5: 'Cada variable de clase, variable de instancia o componente de matriz se inicializa con un valor predeterminado cuando se crea (§15.9, §15.10): [...] Para el tipo char, el valor predeterminado es el nulo carácter, es decir, "\ u0000". –

1

Creo que se debe a que no se ha inicializado c y por lo tanto mantiene \0, es decir, "fin de línea". Así, println impresiones hasta final de la línea y no imprime su ]

+0

-1 println imprime todo el String. Puede ser que la IU no lo muestre correctamente. – Stefan

0

Debe inicializar su Char C, así como el int i . Buena práctica del código: ¡es importante inicializar su variable una vez que declara una variable!

+0

Sí, es una buena práctica, pero eche un vistazo a las respuestas en otros lugares. –

Cuestiones relacionadas