3 в первой строке указывает, сколько строк вам нужно прочитать, поэтому вы должны использовать эту информацию, а не полагаться только на hasNextLine () , который не использует всепредоставленная вам информация:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
class FileInputExample {
public static void main(String[] args) {
File file = new File("input.txt");
try {
Scanner scanner = new Scanner(file);
int n = scanner.nextInt(); // This reads the 3 in your example
for (int line = 1; line <= n; line++) {
int a = scanner.nextInt();
int b = scanner.nextInt();
// Do something with a and b like store them in ArrayLists or something
System.out.println(String.format("A: %d, B: %d", a, b));
}
scanner.close();
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
Вывод:
A: 24, B: 1
A: 4358, B: 754
A: 305, B: 794
input.txt:
3
24 1
4358 754
305 794
Если вы хотите использовать hasNextLine () в цикле while, вам нужно пропустить первую строку с 3, вне цикла while:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
class FileInputExample {
public static void main(String[] args) {
File file = new File("input.txt");
try {
Scanner scanner = new Scanner(file);
scanner.nextLine(); // skip the 3 on the first line
while (scanner.hasNextLine()) {
int a = scanner.nextInt();
int b = scanner.nextInt();
System.out.println(String.format("A: %d, B: %d", a, b));
}
scanner.close();
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}