Explicamos cómo mostrar texto por pantalla (en línea de comandos, consola o shell) con Java. Usaremos los métodos print, println y printf . Para el desarrollo de la aplicación Java usaremos el IDE gratuito NetBeans y explicaremos cómo generar un JAR y ejecutarlo desde la línea de comandos.

Requisitos para desarrollar aplicación Java con NetBeans

Necesitaremos disponer del IDE de desarrollo NetBeans, que es gratuito e incluso se puede descargar una versión portable de su web oficial que no requiere de instalación. También se puede usar cualquier otro IDE como Eclipse o IntelliJ IDEA. Incluso puede realizarse la aplicación Java usando únicamente un editor de texto plano, como Notepad en Windows o vi en Linux.

Para la compilación de la aplicación Java necesitaremos la Máquina Virtual Java (Java Virtual Machine JVM) instalada en el sistema operativo en el que vayamos a ejecutarla.

Crear aplicación Java con NetBeans

En primer lugar crearemos una aplicación Java desde el IDE NetBeans. Para ello pulsaremos en el menú «File» – «New Project…»:

Crear nueva aplicación Java en NetBeans

Elegiremos el tipo de proyecto Java, en nuestro caso «Java with Ant» y «Java Application»:

Crear nueva aplicación Java en NetBeans

Introduciremos el nombre del proyecto, por ejemplo MostrarTexto, la ubicación y el nombre de la clase Main, por ejemplo: mostrartexto.Mostrartexto. Pulsaremos «Finish» para crear la aplicación Java:

Crear nueva aplicación Java en NetBeans

El asistente de creación de proyectos Java de NetBeans generará una estructura de código básico de forma automática, para la clase «Main» de nuestra aplicación. El código que añadamos a esta clase será el que se ejecute cuando iniciemos la aplicación:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package secuenciasjava;

/**
 *
 * @author ProyectoA
 */
public class SecuenciasJava {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
    }    
}

Mostrar texto por pantalla en Java con System.out.print

Para mostrar un texto por pantalla (consola, línea de comandos, shell) podremos usar el método print, del paquete System.out. Un ejemplo de uso:

package mostrartexto;
/**
 * @author ProyectoA
 */
public class MostrarTexto {
    public static void main(String[] args) {
        System.out.print("Esto es una prueba de texto por pantalla. ");
        System.out.print("No añade salto de línea.\n");
        System.out.print("Para añadir salto de línea podemos usar \"\\n\"");
        System.out.print("\nAhora sí hace salto de línea");
    }    
}

Pulsando en «Play» (tecla F6) podremos ver el resultado en NetBeans, que será el mismo que si ejecutásemos nuestra aplicación en un equipo Windows, Linux o Mac OS:

Mostrar texto por pantalla en Java con System.out.print

Mostrar texto por pantalla en Java con System.out.println

Para el caso del método println, el uso y el resultado serán los mismos que en el caso de print, solo que println añadirá un salto de línea de forma automática cada vez que se invoque. Por ejemplo:

package mostrartexto;
/**
 * @author ProyectoA
 */
public class MostrarTexto {
    public static void main(String[] args) {
        System.out.println("Esto es una prueba de texto por pantalla con println. ");
        System.out.println("Que añade un salto de línea de forma automática");
    }    
}
Mostrar texto por pantalla en Java con System.out.println

Mostrar texto por pantalla en Java con System.out.printf

El método printf es equivalente al método format, proporciona una forma de mostrar resultados por pantalla incluyendo parámetros entre el texto. Este método permite introducir múltiples parámetros en la cadena y luego reemplazarlos por su contenido.

Veamos un ejemplo para entenderlo mejor. Supongamos que tenemos la cadena de texto:

«Mi edad es xx, me llamo xx y soy de xx»

En dicha cadena queremos reemplazar cada xx por el valor que consideremos y mostrarlo por pantalla. Pues bien, en Java y con printf sería de la siguiente forma:

System.out.printf("Mi edad es %d, me llamo %s y soy de %s\n", 45, "Alonso Javier", "España");

En el ejemplo anterior vemos que le pasamos como parámetro al método printf los siguientes valores:

  • 45: en número, que será la edad, y sustituirá al parámetro %d.
  • «Alonso Javier»: en texto, que será el nombre y sustituirá al primer parámetro %s.
  • «España»: en texto, que será el país y sustituirá al segundo parámetro %s.

Como vemos, a printf le podemos indicar el tipo de dato del parámetro, si será un número (%s) o bien un texto (%s). Irá reemplazando por orden cada parámetro que le pasemos después de la coma en el texto.

El resultado de la ejecución del programa será:

Mi edad es 45, me llamo Alonso Javier y soy de España

Mostrar texto por pantalla en Java con System.out.printf

Este método es muy potente para formatear cadenas, cuenta con multitud de opciones:

ParámetroDescripción
n$Sirve para indicar el orden en el que se reemplazarán los parámetros (argumentos). En caso de no especificarse, como hemos visto anteriormente, se reemplazar por el orden de introducción. Si se indica, por ejemplo %2$s se referirá al segundo parámetro, independientemente del lugar que ocupa en la cadena de formato
FlagsDescripción
númeroRellena con espacios ó con ceros a la izquierda hasta el valor del número
0Rellena con ceros a la izquierda hasta el valor dado por el flag anterior. Por ejemplo %02d muestra un número justificado con ceros hasta dos dígitos a la izquierda
+Mostrar el signo de un número
Justifica el campo a la izquierda
#Formato alternativo. Para números reales se dejan ceros al final y se muestra siempre la coma. Para números que no están en base 10, se añade un prefijo denotando la base
AnchoDescripción
númeroTamaño del ancho del campo donde se mostrará el valor
*Igual que el caso anterior, pero el número a utilizar se pasa como parámetro justo antes del valor. Por ejemplo printf("%*d", 3, 6) muestra el número 6, pero con un ancho de 3 dígitos, es decir, rellenará con 2 espacios en blanco a la izquierda.
PrecisiónDescripción
númeroTamaño de la parte decimal para números reales. Número de caracteres a imprimir para cadenas de texto
*Igual que el caso anterior, pero el número a utilizar se pasa como parámetro justo antes del valor. Por ejemplo printf("%.*s", 4, "Hola Mundo") mostrará “Hola”.
LongitudDescripción
hhConvertir variable de tipo char a entero e imprimir
hConvertir variable de tipo short a entero e imprimir
lPara enteros, se espera una variable de tipo long
llPara enteros, se espera una variable de tipo long long
LPara reales, se espera una variable de tipo long double
zPara enteros, se espera un argumento de tipo size t
TipoDescripción
%cImprime el carácter ASCII correspondiente de un número pasado como parámetro
%d, %iConversión decimal con signo de un entero
%x, %XConversión hexadecimal sin signo
%pDirección de memoria (puntero)
%e, %EConversión a coma flotante con signo en notación científica
%f, %FConversión a coma flotante con signo, usando punto decimal
%g, %GConversión a coma flotante, usando la notación que requiera menor espacio
%oConversión octal sin signo de un entero
%uConversión decimal sin signo de un entero
%sCadena de caracteres (terminada en ‘\0’)
%%Imprime el símbolo %
Fecha/HoraDescripción
tBConversión de fecha/hora a formato local especificado
td, teConversión de fecha y hora: día del mes de 2 dígitos. td tiene ceros iniciales según sea necesario, te no
ty, tYConversión de fecha y hora: ty = año de 2 dígitos, tY = año de 4 dígitos
tlConversión de fecha y hora: hora en formato de 12 horas
tMConversión de fecha y hora: minutos en 2 dígitos, con ceros a la izquierda según sea necesario
tpConversión de fecha y hora: am / pm específica de la configuración regional (minúsculas)
tmConversión de fecha y hora: meses en 2 dígitos, con ceros a la izquierda según sea necesario
tDConversión de fecha y hora: fecha como% tm% td% ty

Mostramos a continuación algunos ejemplos Java que usan printf o format.

Para mostrar el número pi con 5 decimales:

public class MostrarTexto {
    public static void main(String[] args) {
        double pi = Math.PI;
        System.out.printf("El valor de pi es: %.5f \n", pi);
    }
}

Mostrará:

Mostrar texto por pantalla en Java con System.out.printf

Para mostrar una fecha con el formato que deseemos:

import java.util.Calendar;
/**
 * @author ProyectoA
 */
public class MostrarTexto {
    public static void main(String[] args) {
        Calendar fechaActual = Calendar.getInstance();
        System.out.format("%tB %te, %tY%n", fechaActual, fechaActual, fechaActual);
    }
}

Mostrará: diciembre 17, 2020.

Mostrar texto por pantalla en Java con System.out.printf

Generar JAR con NetBeans para probar la aplicación en Windows, Linux, Mac OS

Si queremos generar un JAR que contendrá el fichero MANIFEST.MF y los ficheros .class de nuestra aplicación podremos hacerlo desde NetBeans, desde el menú «Run» – «Build Project…»:

Generar JAR  con NetBeans para probar la aplicación en Windows, Linux, Mac OS

La generación del JAR mostrará por consola el siguiente resultado:

ant -f E:\Java\fuentes\MostrarTexto -Dnb.internal.action.name=build jar
init:
Deleting: E:\Java\fuentes\MostrarTexto\build\built-jar.properties
deps-jar:
Updating property file: E:\Java\fuentes\MostrarTexto\build\built-jar.properties
compile:
Copying 1 file to E:\Java\fuentes\MostrarTexto\build
To run this application from the command line without Ant, try:
C:\Program Files\Java\jdk-11.0.8/bin/java -cp E:\Java\fuentes\MostrarTexto\dist\MostrarTexto.jar mostrartexto.MostrarTexto
deploy:
jar:
BUILD SUCCESSFUL (total time: 0 seconds)

En el caso de nuestra aplicación MostrarTexto, habrá generado el fichero MostrarTexto.jar en la carpeta dist:

Generar JAR  con NetBeans para probar la aplicación en Windows, Linux, Mac OS

Para ejecutar este fichero desde la línea de comandos (sea desde equipo con Windows, con Linux o con Mac OS), deberemos hacerlo con una versión de Java igual o superior a la usada para generar el JAR, de lo contrario nos mostrará este error:

Error: A JNI error has occurred, please check your installation and try again
Exception in thread «main» java.lang.UnsupportedClassVersionError: mostrartexto/MostrarTexto has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:601)

Y si intentamos ejecutar el fichero .java directamente, usando el siguiente comando para generar el .class:

javac *.java

Y este otro comando para ejecutar la aplicación, que usará los .class generados anteriormente:

java -cp . mostrartexto.MostrarTexto

Donde «mostrartexto» será el nombre del package y «MostrarTexto» el nombre de la clase que contiene el método main.

En caso de que la aplicación genere algún error en el inicio o bien en el caso en que no tengamos la versión de Java apropiada, nos puede mostrar el error:

Error: no se ha encontrado o cargado la clase principal mostrarTexto.MostrarTexto

Que no es descriptivo, en realidad sí ha encontrado la clase principal, el problema es que no tenemos la misma versión de Java (o superior) en el equipo con la que hemos generado los .class. O bien, que se ha producido algún error en el código.

Una vez que estemos seguros de tener la misma versión de Java, podremos ejecutar el JAR con:

java -jar MostrarTexto.jar

Ejecutará la aplicación en cualquier sistema operativo:

Generar JAR  con NetBeans para probar la aplicación en Windows, Linux, Mac OS