Estoy tratando de devolver datos del archivo con un conjunto de oraciones y un limitador. Aquí está el ejemplo de mi inputs.txt
.
1
The dog
The cat
The mouse
The mouse
The cow
The boat
Con la primera línea como limitador, intento obtener solo la primera oración, pero devuelve una cadena vacía. Aquí está mi código:
import java.io.*;
import java.util.*;
import java.lang.*;
class dep {
public static void main(String args[] ) throws Exception {
int count = 0;
Scanner s = new Scanner(new File("inputs.txt"));
int lim = s.nextInt();
while(s.hasNextLine() && lim != count) {
String line = s.nextLine();
System.out.println(line);
count++;
}
System.out.print("==DONE LOOPING==");
}
}
Output:
<empty_string>
==DONE LOOPING==
Expected output
The dog
==DONE LOOPING==
2 respuestas
s.nextInt()
simplemente lee el siguiente int, dejando el resto de la línea para más tarde.
Entonces, su primera pasada del ciclo lee solo la nueva línea después del 1.
Para probar esto, cambie su primera línea a
1 foo
Y vea lo que genera su programa.
Para solucionarlo, haga un nextLine()
después de nextInt()
.
nextInt()
no consume el carácter de nueva línea y nextLine()
consume todo lo necesario. Necesita otro nextLine()
para consumir ese carácter de nueva línea antes de comenzar a reproducir:
int lim = s.nextInt();
s.nextLine(); // Consume the newline after the limit
while(s.hasNextLine() && lim != count) {
String line = s.nextLine();
System.out.println(line);
count++;
}
Nuevas preguntas
java
Java es un lenguaje de programación de alto nivel. Utilice esta etiqueta cuando tenga problemas para usar o comprender el idioma en sí. Esta etiqueta rara vez se usa sola y se usa con mayor frecuencia junto con [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] y [maven].