De programación java: la lectura de una línea a la vez
En este listado de código Java, el payOneEmployee Método ilustra algunos trucos útiles para la lectura de datos. En particular, todos los escáneres que se crea tiene una nextLine método. (Es posible que no utilice este nextLine método, pero el método está disponible, no obstante.)
Video: Leer Textos en Java
Cuando se llama a un escáner de nextLine método, el método agarra todo hasta el final de la línea actual de texto. En este establecimiento, una llamada a nextLine puede leer una línea entera de la EmployeeInfo.txt archivo. (En otro programa, un escáner de nextLine llamada puede leer todo lo que el usuario escribe en el teclado hasta la pulsación de la tecla Enter.)
DoPayroll clase de importación java.util.Scanner-importación e importación java.io.File java.io.IOException pública {void Main (args String []) public static throws IOException {Escáner diskScanner = nuevo escáner (nuevo archivo ("EmployeeInfo.txt")) - for (int empnum = 1- empnum lt; = 3- empnum ++) {payOneEmployee (diskScanner) -} diskScanner.close () -} estática payOneEmployee void (aScanner escáner) {Empleado anEmployee = new Employee () - anEmployee.setName (aScanner.nextLine ()) - anEmployee. setJobTitle (aScanner.nextLine ()) - anEmployee.cutCheck (aScanner.nextDouble ()) - aScanner.nextLine () -}}
Observe la cuidadosa elección de las palabras: nextLine lee todo hasta el final de la línea actual. Por desgracia, lo que significa leer hasta el final de la línea actual no es siempre lo que se piensa que significa. entremezclándose nextInt, nextDouble, y nextLine las llamadas pueden ser un poco incómodo. Tienes que ver lo que está haciendo y comprobar la salida de su programa cuidadosamente.
Video: Como Programar en Java, Mostrar Mensaje en Consola con Salto de Linea
Para entender todo esto, tiene que ser muy consciente de los saltos de línea de un archivo de datos. Pensar en un salto de línea como un carácter adicional, atrapado entre una línea de texto y el siguiente. Entonces se puede imaginar que la llamada nextLine medios para leer todo hasta e incluyendo el siguiente salto de línea.
Ahora echa un vistazo a esta cifra.
Si una llamada a nextLine lee Barry Burd [LineBreak], la llamada posterior a nextLine lee CEO [LineBreak].
Si una llamada a nextDouble lee el número 5000.00, la llamada posterior a nextLine lee el [LineBreak] que viene inmediatamente después del número 5000.00. (Eso es todo el nextLine lee - una [LineBreak] y nada más.)
Si una llamada a nextLine lee el [LineBreak] después del número 5000.00, la llamada posterior a nextLine lee Harriet Ritter [LineBreak].
Así que después de leer el número 5000.00, necesita dos las llamadas a nextLine con el fin de recoger el nombre Harriet Ritter. El error que se suele hacer es olvidarse de la primera de esas dos llamadas.
Veamos de nuevo el archivo en la figura. Para el código de esta sección para que funcione correctamente, debe tener un salto de línea después de la última 10000.00. Si no lo hace, una última llamada a nextLine hace que su programa de estrellarse y arder. El mensaje de error indica NoSuchElementException: No se encontró línea.
Usted puede ser sorprendido por el número de peculiaridades que se encuentran en los métodos de exploración de cada lenguaje de programación. Por ejemplo, el primero nextLine que lee desde el archivo en la figura de devora Barry Burd [LineBreak] desde el archivo.
Pero eso nextLine llamada de entrega Barry Burd (Sin ningún salto de línea) al código de ejecución. Asi que nextLine busca un salto de línea, y luego nextLine pierde el salto de línea. Sí, este es un punto sutil. Y no, este punto sutil casi nunca causa problemas a nadie.
Video: Leer Archivos en Java Parte 1
Si este asunto de nextDouble y nextLine se confunde, por favor no poner la culpa en Java. Mezclar las llamadas de entrada es delicado trabajo en cualquier lenguaje de programación informática. Y lo realmente desagradable es que cada lenguaje de programación se acerca al problema un poco diferente.
¿Qué te enteraste nextLine en Java ayuda a comprender los problemas cuando se llega a saber C ++ o Visual Basic, pero no le dice todos los detalles. detalles de cada idioma son exclusivas de ese idioma.