{"id":1075,"date":"2018-01-26T03:14:16","date_gmt":"2018-01-26T03:14:16","guid":{"rendered":"https:\/\/manualjavaoracle.wordpress.com\/?p=1075"},"modified":"2018-02-09T13:33:43","modified_gmt":"2018-02-09T18:33:43","slug":"entrada-y-salida","status":"publish","type":"post","link":"https:\/\/www.manualjava.net\/?p=1075","title":{"rendered":"Entrada y salida"},"content":{"rendered":"<p><img decoding=\"async\" loading=\"lazy\" class=\" wp-image-1284 alignnone\" src=\"https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/01\/java81.png?w=300\" alt=\"\" width=\"272\" height=\"104\" srcset=\"https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/01\/java81.png 331w, https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/01\/java81-300x115.png 300w\" sizes=\"(max-width: 272px) 100vw, 272px\" \/><\/p>\n<p><span style=\"color: #000000;\">En este apartado se tratan la salida a pantalla y la entrada del teclado,\u00a0<strong>E\/S de consola.<\/strong> Desde la versi\u00f3n 5.0 y posteriores incorpora la clase Scanner definida en el paquete java.util muy adecuada para entrada por consola.<\/span><!--more--><\/p>\n<h2><strong><span style=\"color: #000000;\">Salida a la consola<\/span><\/strong><\/h2>\n<p><span style=\"color: #000000;\">Java utiliza paquetes y sentencias de importaci\u00f3n (import). Los paquetes son biblioteca de clases Java. Las sentencias de importaci\u00f3n ponen disponibles las clases del paquete en los programas. Existen dos formas de producir salidas a la pantalla: 1) System.out.println y 2) System.out.printf.<\/span><\/p>\n<ul>\n<li><strong><span style=\"color: #000000;\">System.out.println<\/span><\/strong><\/li>\n<\/ul>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0Ya se ha utilizado anteriormente System.out.println para salida a pantalla.<\/span><\/p>\n<p><span style=\"color: #000000;\">System.out es un objeto que es una parte del lenguaje Java y println es un m\u00e9todo invocado por ese objeto. Cuando se utiliza System.out.println para salida, los datos se proporcionan con un argumento entre par\u00e9ntesis y la sentencia termina con un punto y coma.<\/span><\/p>\n<h3><strong><span style=\"color: #000000;\">Sintaxis<\/span><\/strong><\/h3>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0System.out.println(elemento_1 + elemento_2 + . . . + elemento_n)<\/span><\/p>\n<h3><strong><span style=\"color: #000000;\">Ejemplo<\/span><\/strong><\/h3>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0System.out.println(\u00abBienvenido a Java\u00bb);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0System.out.println(\u00abPresupuesto = \u00bb + cantidad + \u00abeuros\u00bb);<\/span><\/p>\n<ul>\n<li><strong><span style=\"color: #000000;\">System.out.print<\/span><\/strong><\/li>\n<\/ul>\n<p><span style=\"color: #000000;\">La \u00fanica diferencia entre System.out.println y System.out.print es que con println la siguiente salida salta a una nueva l\u00ednea, mientras que con print la siguiente salida se sit\u00faa en la misma l\u00ednea.\u00a0 \u00a0<\/span><\/p>\n<h3><strong><span style=\"color: #000000;\">Ejemplo<\/span><\/strong><\/h3>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0System.out.print(\u00abVeracruz\u00a0 \u00ab);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0System.out.print(\u00bb\u00a0 Puerto La Cruz\u00bb);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0System.out.print(\u00bb\u00a0 y\u00a0 \u00ab);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0System.out.print(\u00abPlaya del Cura\u00a0 \u00ab);<\/span><\/p>\n<p><span style=\"color: #000000;\">producen la siguiente salida<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 Veracruz Puerto La Cruz y <\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 Playa del Cura\u00a0<\/span><\/p>\n<h3><strong><span style=\"color: #000000;\">A recordar<\/span><\/strong><\/h3>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0System.out.println(. . .);\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 equivale a <\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0System.out.print(. . . + \u00ab\\n\u00bb);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0utilizando el car\u00e1cter de escape \\n (salto de linea)<\/span><\/p>\n<h2><strong><span style=\"color: #000000;\">Salida formateada con printf<\/span><\/strong><\/h2>\n<p><span style=\"color: #000000;\">En la versi\u00f3n 5.0, Java incluy\u00f3 un m\u00e9todo denominado printf, inspirado en la funci\u00f3n cl\u00e1sica de la biblioteca C, que se puede utilizar para producir la salida en un formato espec\u00edfico. La sentencia System.out.printf tiene un primer argumento cadena, conocida como\u00a0<strong>especificador de formato\u00a0<\/strong>y el segundo argumento es el valor de salida en el formato establecido.<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 System.out.printf(\u00ab%8.3f\u00bb\u00bb, x);<\/span><br \/>\n<span style=\"color: #000000;\">imprime x con una anchura de campo de 8 caracteres y una precisi\u00f3n de 3 caracteres.<\/span><\/p>\n<h3><strong><span style=\"color: #000000;\">Ejemplo<\/span><\/strong><\/h3>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0double precio = 25.4;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0System.out.printf(\u00ab$\u00bb);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0System.out.printf(\u00ab%6.2f\u00bb,precio);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0system.out.printf(\u00bb\u00a0 \u00a0unidad\u00bb);<\/span><\/p>\n<p><span style=\"color: #000000;\">Al ejecutarse las sentencias anteriores visualiza $25.40 unidad. El dato con un ancho de 6 caracteres y 2 caracteres de precisi\u00f3n.<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0\u00a0double x = 10000.0\/3.0;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 System.out.printf(\u00ab%9.3f\u00bb,x);<\/span><\/p>\n<p><span style=\"color: #000000;\">Al ejecutarse las sentencias anteriores visualiza x con una anchura de 9 caracteres y una precisi\u00f3n de 3 caracteres (un espacio en blanco a la izquierda y ocho caracteres):<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 3333.333<\/span><\/p>\n<p><span style=\"color: #000000;\">Cada uno de los especificadores de formato que comienza con un car\u00e1cter <strong>%<\/strong> se reemplaza con el argumento correspondiente. El car\u00e1cter de conversi\u00f3n con el que termina un especificador de formato indica el tipo de valor a formatear: <strong>f<\/strong> es un n\u00famero en coma flotante, <strong>s<\/strong> es una cadena y <strong>d<\/strong> es un entero decimal.<\/span><\/p>\n<h2><strong><span style=\"color: #000000;\">Entrada<\/span><\/strong><\/h2>\n<p><span style=\"color: #000000;\">Los programas Java construidos hasta el momento no son interactivos ya que no reciben ninguna entrada de datos. En esta secci\u00f3n aprenderemos un m\u00e9todo para leer la entrada del usuario.<\/span><\/p>\n<p><span style=\"color: #000000;\">En la versi\u00f3n 5.0, Java incluy\u00f3 una clase para simplificar la entrada de datos por el teclado. Esta clase se llama Scanner y se conecta a System.in.<\/span><\/p>\n<p><span style=\"color: #000000;\">Para leer la entrada de la consola, se debe construir primero un objeto de Scanner, pasando simplemente el objeto System.in al constructor Scanner (m\u00e1s adelante se explicar\u00e1n los constructores y el operador new en detalle).<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0Scanner entrada = new Scanner(System.in);<\/span><\/p>\n<p><span style=\"color: #000000;\">A continuaci\u00f3n se pueden utilizar diferentes m\u00e9todos de la clase Scanner para leer la entrada: nextInt o nextDouble leen el siguiente entero y siguiente valor de coma flotante.<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0System.out.print(\u00abIntroduzca cantidad: \u00ab);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0int cantidad;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0cantidad = entrada.nextInt();<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0System.out.print(\u00abIntroduzca precio: \u00ab);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0double precio = entrada.nextDouble();<\/span><\/p>\n<p><span style=\"color: #000000;\">Cuando se llama a uno de los m\u00e9todos anteriores, el programa espera hasta que el usuario teclea un n\u00famero y pulsa la tecla Intro (Enter). El m\u00e9todo nextLine lee una l\u00ednea de entrada.<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0System.out.print(\u00ab\u00bfCual es su nombre?\u00bb);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0String nombre;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0nombre = entrada.nextLine();<\/span><\/p>\n<p><span style=\"color: #000000;\">El m\u00e9todo next se emplea cuando se desea leer una palabra sin espacios.<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0String apellido = entrada.next();<\/span><\/p>\n<p><span style=\"color: #000000;\">La clase Scanner est\u00e1 definida en el paquete java.util; en Java siempre que se utiliza una clase que no est\u00e1 definida en el paquete b\u00e1sico java.lang se necesita utilizar una directiva import. La primera l\u00ednea que se pone cerca del principio del archivo, indica a Java d\u00f3nde encontrar la definici\u00f3n de la clase Scanner:<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0import\u00a0 java.util.Scanner<\/span><\/p>\n<p><span style=\"color: #000000;\">Esta l\u00ednea significa que la clase Scanner est\u00e1 en el paquete java.util; util es la abreviatura de utility (utilidad o utiler\u00eda), pero en c\u00f3digo Java siempre se utiliza la abreviatura util. Un paquete, como ya conoce el lector, es una biblioteca de clases. La sentencia import pone disponible la clase dentro del programa.<\/span><\/p>\n<p><span style=\"color: #000000;\"> \u00a0 \u00a0 \u00a0 import java.util.Scanner;<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \/**<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Este programa muestra la entrada por consola y ha sido creado<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 el 26 de enero<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 *\/<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 public class EntradaTest<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 {<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 public static void main (String[] args)<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 {<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0Scanner entrada = new Scanner(System.in);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/ obtener la primera entrada<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0System.out.print(\u00ab\u00bfCual es su nombre?\u00bb);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0String nombre = entrada.nextLine();<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/ leer la segunda entrada<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0System.out.print(\u00ab\u00bfCual es su edad?\u00bb);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0int edad = entrada.nextInt();<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/ visualizar salida<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0System.out.println(\u00abBuenos dias \u00bb + nombre +<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00ab; a\u00f1os \u00bb + edad);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 }<\/span><\/p>\n<h2><strong><span style=\"color: #000000;\">Sintaxis de entrada de teclado utilizando Scanner<\/span><\/strong><\/h2>\n<ul>\n<li><span style=\"color: #000000;\">Hacer disponible la clase Scanner para utilizarla en su c\u00f3digo. Incluir la siguiente l\u00ednea al comienzo del archivo que contiene su programa.<\/span><\/li>\n<\/ul>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 import\u00a0 java.util.Scanner;<\/span><\/p>\n<ul>\n<li><span style=\"color: #000000;\">Antes de introducir algo por teclado se debe crear un objeto de la clase Scanner.<\/span><\/li>\n<\/ul>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Scanner nombreObjeto = new Scanner(System.in);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 nombreObjeto es cualquier identificador Java (no palabra reservada).<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Scanner teclado = new Scanner(System.in);<\/span><\/p>\n<ul>\n<li><span style=\"color: #000000;\">Los m\u00e9todos nextInt, nextDouble y next leen un valor de tipo int, un valor de tipo double y una palabra, respectivamente.<\/span><\/li>\n<\/ul>\n<h3><strong><span style=\"color: #000000;\">Sintaxis<\/span><\/strong><\/h3>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0variable_int = nombreObjeto.nextInt();<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0variable_double = nombreObjeto.nextDouble();<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0variable_cadena = nombreObjeto.next();<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0variable_cadena = nombreObjeto.nextLine();<\/span><\/p>\n<h3><strong><span style=\"color: #000000;\">Ejemplo<\/span><\/strong><\/h3>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0int edad;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0edad = teclado.nextInt();<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0double precio;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0precio = teclado.nextDouble();<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0String rio;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0rio = teclado.next();<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En este apartado se tratan la salida a pantalla y la entrada del teclado,\u00a0E\/S de consola. Desde la versi\u00f3n 5.0 y posteriores incorpora la clase Scanner definida en el paquete java.util muy adecuada para entrada por consola.<\/p><p><a class=\"more-link btn\" href=\"https:\/\/www.manualjava.net\/?p=1075\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":1284,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"_links":{"self":[{"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/posts\/1075"}],"collection":[{"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1075"}],"version-history":[{"count":1,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/posts\/1075\/revisions"}],"predecessor-version":[{"id":2093,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/posts\/1075\/revisions\/2093"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/media\/1284"}],"wp:attachment":[{"href":"https:\/\/www.manualjava.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1075"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1075"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1075"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}