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.
- Crear nueva aplicación Java en NetBeans.
- Mostrar texto por pantalla en Java con System.out.print.
- Mostrar texto por pantalla en Java con System.out.println.
- Mostrar texto por pantalla en Java con System.out.printf.
- Generar JAR con NetBeans para probar la aplicación en Windows, Linux, Mac OS.
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…»:
Elegiremos el tipo de proyecto Java, en nuestro caso «Java with Ant» y «Java Application»:
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:
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
/* * 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:
1 2 3 4 5 6 7 8 9 10 11 12 |
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.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:
1 2 3 4 5 6 7 8 9 10 |
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.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:
1 |
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
Este método es muy potente para formatear cadenas, cuenta con multitud de opciones:
Parámetro | Descripció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 |
Flags | Descripción |
número | Rellena con espacios ó con ceros a la izquierda hasta el valor del número |
0 | Rellena 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 |
Ancho | Descripción |
número | Tamañ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ón | Descripción |
número | Tamañ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”. |
Longitud | Descripción |
hh | Convertir variable de tipo char a entero e imprimir |
h | Convertir variable de tipo short a entero e imprimir |
l | Para enteros, se espera una variable de tipo long |
ll | Para enteros, se espera una variable de tipo long long |
L | Para reales, se espera una variable de tipo long double |
z | Para enteros, se espera un argumento de tipo size t |
Tipo | Descripción |
%c | Imprime el carácter ASCII correspondiente de un número pasado como parámetro |
%d , %i | Conversión decimal con signo de un entero |
%x , %X | Conversión hexadecimal sin signo |
%p | Dirección de memoria (puntero) |
%e , %E | Conversión a coma flotante con signo en notación científica |
%f , %F | Conversión a coma flotante con signo, usando punto decimal |
%g , %G | Conversión a coma flotante, usando la notación que requiera menor espacio |
%o | Conversión octal sin signo de un entero |
%u | Conversión decimal sin signo de un entero |
%s | Cadena de caracteres (terminada en ‘\0’) |
%% | Imprime el símbolo % |
Fecha/Hora | Descripción |
tB | Conversión de fecha/hora a formato local especificado |
td, te | Conversión de fecha y hora: día del mes de 2 dígitos. td tiene ceros iniciales según sea necesario, te no |
ty, tY | Conversión de fecha y hora: ty = año de 2 dígitos, tY = año de 4 dígitos |
tl | Conversión de fecha y hora: hora en formato de 12 horas |
tM | Conversión de fecha y hora: minutos en 2 dígitos, con ceros a la izquierda según sea necesario |
tp | Conversión de fecha y hora: am / pm específica de la configuración regional (minúsculas) |
tm | Conversión de fecha y hora: meses en 2 dígitos, con ceros a la izquierda según sea necesario |
tD | Conversió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:
1 2 3 4 5 6 |
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á:
Para mostrar una fecha con el formato que deseemos:
1 2 3 4 5 6 7 8 9 10 |
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.
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…»:
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:
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: