Espacio extra-autoañadido en método printf()

Hola amigos programadores;

Tengo una duda respecto al método printf() del objeto out;

Mi programa compila y corre correctamente, sin embargo, noté algo extraño y es que en la salida del sistema, tras realizar la llamada a printf(), éste método añade un espacio extra al final de la sentencia, pensé que quizá era un problema de Eclipse, por lo que lo corrí usando el símbolo del sistema, pero el espacio extra sigue allí, les pondré el código y trataré de mostrarles el resultado.

Más que un problema, me da curiosidad el saber porqué se produce este fenómeno, entiendo que el método println() termina de imprimir la cadena y posiciona el puntero en la siguiente línea, ¿Será que el método printf() hace algo similar?

Les agradezco cualquier información sobre esto.

/*
* Programa que utiliza un método para elevar al cuadrado y otro al cubo
* Hecho por Keyzo Gakiya
* Enero de 2013
*/

import java.util.Scanner;

public class Exponent {

        public static void main(String[] args) {
                Scanner entrada = new Scanner(System.in);
                int numero, alCuadrado, alCubo;
               
                System.out.printf("%s\n", "Introduzca un valor a exponer");
                numero = entrada.nextInt();
               
               
                System.out.printf("%s %d %s %d\n ", "El número ", numero, " al cuadrado da", cuadrado(numero));
                System.out.printf("%s %d %s %d\n ", "El número ", numero, " al cubo da", cubo(numero));
               
        }//Fin del método main

       
        private static int cuadrado(int numAlCuad){
               
                int resultado;
               
                resultado = numAlCuad * numAlCuad;
               
                return resultado;
               
        }//Fin del método cuadrado
       
private static int cubo(int numAlCub){
               
                int resultado;
               
                resultado = numAlCub * numAlCub * numAlCub;
               
                return resultado;
               
        }//Fin del método cuadrado
               
}//Fin de la clase Exponent

Les añado de todas maneras el resultado de manera textual.

//Usando un número 5 como ejemplo para esta clase

Introduzca un valor a exponer
5
El número 5 al cuadrado da 25
El número 2 al cubo da 125

Como les digo, aparece un espacio extra al final del método printf(), así es como se usa o qué ocurre allí? Gracias!

AdjuntoTamaño
java1.png4.99 KB

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Bueno, ya me imaginaba que en

Bueno, ya me imaginaba que en el HTML no se iba a posicionar la segunda sentencia como aparece en mi IDE, es por eso que añadí la imagen de la captura de pantalla.

Ya descubrí por qué es!

Ya me dí cuenta, no sabía que cuando defino los parámetros de printf(), los espacios también se cuentan, si no quería que aparecieran espacios, debí colocar el printf() de la siguiente manera:

printf("%s%d%s%d", "cadena", variable, "cadena", variable);

Muchísimas gracias a todos los que se tomaron la molestia de leer el tema para intentar ayudarme, buen día!

Me equivoqué

No sé si se publique el mensaje anterior donde avisé que ya entendí qué era lo que ocurría, pero me equivoqué, sigo sin entender porqué aparece ese espacio extra antes de la cadena del segundo renglón (la que eleva al cubo el valor recibido)

Imagen de Jose Manuel

Totalmente paranormal

Bueno este fenómeno es algo muy común dentro del área de la programación jajajaja. Todo se resume en que antes de cerrar las comillas te has dejado un espacio en blanco.

Buenas tardes, si te das

Buenas tardes, si te das cuenta en las líneas:

System.out.printf("%s %d %s %d\n ", "El número ", numero, " al cuadrado da", cuadrado(numero));

Después de "\n" tienes un espacio y eso tambien cuenca. Lo que hace es que después del retorno de carro deja un espacio.

Un saludo