Java >> Tutorial de Java >  >> Java

¿Por qué obtengo una suma diferente y errores para la suma en Java?

Soy realmente nuevo en Java. Tengo una pregunta con respecto a los números. Me dieron la tarea de imprimir 2 números uno al lado del otro.

Por ejemplo, si hay 2 números:a = 5 , b = 9 , debería imprimir ambos uno al lado del otro. Entonces la salida se vería 59 .

En python, podemos hacer:

print(a,b)

Aunque agrega un espacio, puedo eliminarlo más tarde.

Pero en Java. cuando hago System.out.println(a,b) , obtengo:

error: no suitable method found for println(int,int)
        System.out.println(a,b);
                  ^

Entonces, después de rascarme la cabeza un poco, se me ocurrió System.out.println(a+''+b) Y luego da:

error: empty character literal
        System.out.println(a+''+b);
                             ^

Entonces, mirando el error, parecía '' es inválido. Así que hice ' ' Y el resultado que obtuve fue:

46

¿Por qué recibí un error? Cuando lo hago:

System.out.println(a+""+b);

Imprime lo que quiero:59

Aquí está mi código (en funcionamiento):

public class Main
{
    public static void main(String[] args) {
        int a=5;
        int b=6;
        System.out.println(a+""+b);
    }
}

Solo quiero saber por qué funciona esto anterior mientras hago ' ' no. ¿Está relacionado con el tipo de datos?

Respuesta

' ' es un char . Se convertirá automáticamente a un int (el código ASCII de blank se utiliza, tiene el valor 32 ). Luego se ejecuta la suma (5 + 32 + 9 , que se evaluará como 46 ). Eso explica por qué vemos el 46 siendo impreso.

Reemplazando ' ' con "" forzará el int -valores siendo autocasteados a String s, que luego funcionará como se esperaba.

Otra posible solución sería usar System.out.printf("%d%d%n", a, b); .

Demostración de Ideone


Etiqueta Java