Reading a file as lines makes each record available for a loop.

line list Files.readAllLines returns a List where each element is one line from the file.
parse loop A parse loop converts text records into the numeric values the program needs.

Read Lines

bonus
ReadLines.java
Replay: real traced execution (multi-file project)
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;

public class ReadLines {
    public static void main(String[] args) throws Exception {
        int bonus = 0;
        Path path = Path.of("java21_lines.txt");
        Files.write(path, List.of("3", "4", String.valueOf(bonus)));

        List<String> lines = Files.readAllLines(path);
        int sum = 0;
        for (String line : lines) {
            sum += Integer.parseInt(line);
        }

        Files.deleteIfExists(path);
        System.out.println("lines=" + lines.size() + " sum=" + sum);
    }
}
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;

public class ReadLines {
    public static void main(String[] args) throws Exception {
        int bonus = 2;
        Path path = Path.of("java21_lines.txt");
        Files.write(path, List.of("3", "4", String.valueOf(bonus)));

        List<String> lines = Files.readAllLines(path);
        int sum = 0;
        for (String line : lines) {
            sum += Integer.parseInt(line);
        }

        Files.deleteIfExists(path);
        System.out.println("lines=" + lines.size() + " sum=" + sum);
    }
}
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;

public class ReadLines {
    public static void main(String[] args) throws Exception {
        int bonus = 5;
        Path path = Path.of("java21_lines.txt");
        Files.write(path, List.of("3", "4", String.valueOf(bonus)));

        List<String> lines = Files.readAllLines(path);
        int sum = 0;
        for (String line : lines) {
            sum += Integer.parseInt(line);
        }

        Files.deleteIfExists(path);
        System.out.println("lines=" + lines.size() + " sum=" + sum);
    }
}
  1. bonus ← 0, path ← java21_lines.txt, lines ← [3, 4, 0], sum ← 0

    5public class ReadLines {6    public static void main(String[] args) throws Exception {7        int bonus→ 0 = 0;  //@bonus=2, 58        Path path→ java21_lines.txt = Path.of("java21_lines.txt");9        Files.write(pathjava21_lines.txt, List.of("3", "4", String.valueOf(bonus0)));1011        List<String> lines→ [3, 4, 0] = Files.readAllLines(pathjava21_lines.txt);12        int sum→ 0 = 0;13        for (String line : lines) {
  2. sum ← 3

    pass 1 of 3
    12int sum = 0;13for (String line3 : lines[3, 4, 0]) {14    sum→ 3 += Integer.parseInt(line3);15}
    All 3 passes — pass 1 is the card above
    passlinesum
    130 3
    243 7
    307
  3. Files.deleteIfExists(path);

    17    Files.deleteIfExists(pathjava21_lines.txt);18    System.out.println("lines=" + lines.size() + " sum=" + sum7);19}
    outputlines=3 sum=7
  1. bonus ← 2, path ← java21_lines.txt, lines ← [3, 4, 2], sum ← 0

    5public class ReadLines {6    public static void main(String[] args) throws Exception {7        int bonus→ 2 = 2;8        Path path→ java21_lines.txt = Path.of("java21_lines.txt");9        Files.write(pathjava21_lines.txt, List.of("3", "4", String.valueOf(bonus2)));1011        List<String> lines→ [3, 4, 2] = Files.readAllLines(pathjava21_lines.txt);12        int sum→ 0 = 0;13        for (String line : lines) {
  2. sum ← 3

    pass 1 of 3
    12int sum = 0;13for (String line3 : lines[3, 4, 2]) {14    sum→ 3 += Integer.parseInt(line3);15}
    All 3 passes — pass 1 is the card above
    passlinesum
    130 3
    243 7
    327 9
  3. Files.deleteIfExists(path);

    17    Files.deleteIfExists(pathjava21_lines.txt);18    System.out.println("lines=" + lines.size() + " sum=" + sum9);19}
    outputlines=3 sum=9
  1. bonus ← 5, path ← java21_lines.txt, lines ← [3, 4, 5], sum ← 0

    5public class ReadLines {6    public static void main(String[] args) throws Exception {7        int bonus→ 5 = 5;8        Path path→ java21_lines.txt = Path.of("java21_lines.txt");9        Files.write(pathjava21_lines.txt, List.of("3", "4", String.valueOf(bonus5)));1011        List<String> lines→ [3, 4, 5] = Files.readAllLines(pathjava21_lines.txt);12        int sum→ 0 = 0;13        for (String line : lines) {
  2. sum ← 3

    pass 1 of 3
    12int sum = 0;13for (String line3 : lines[3, 4, 5]) {14    sum→ 3 += Integer.parseInt(line3);15}
    All 3 passes — pass 1 is the card above
    passlinesum
    130 3
    243 7
    357 12
  3. Files.deleteIfExists(path);

    17    Files.deleteIfExists(pathjava21_lines.txt);18    System.out.println("lines=" + lines.size() + " sum=" + sum12);19}
    outputlines=3 sum=12