Ошибка ArrayList “Исключение в потоке “main” java.lang.Error: Неразрешенная проблема компиляции:”

Вопрос или проблема

Я писал этот код, чтобы позволить читать 2 файла .txt в массив и сохранить их значения, чтобы я мог их вывести, но на каждом запуске он выдает мне эту ошибку. Я старался изо всех сил, так как это мой первый опыт изучения Java, и эта часть в моем классе особенно.

#vehichles.txt

#тип   Имя    начальное место (они должны начинаться откуда-то)
поезд Экспресс Кайтон
поезд Синкансэн Долтон
воздушный ПаддлДжампер Эдвардс
водный Тридент Халтон
водный Фунэ Исландо
дорога Ридер Абако
дорога Ронин Брэча
дорога РоадУорриор Грэм
дорога Хотрод Эдвардс
дорога ДизельБадди Джеку

и #cargo.txt

#время,  имя,   источник, пункт назначения,    вес
1 Груз Боба Абако Долтон 1
1 Груз Боба Нандаи Ода 3
1 Химикаты ABC Джеку Эдвардс 18
1 ИнтерПласт Кайтон Мидория 4
2 Груз Боба Фискал Брэча 2
2 ИИАЕ Ода Абако 1
2 Химикаты ABC Джеку Лидия 14
2 Науталис ООО Исландо Халтон 1
2 Науталис ООО Исландо Эдвардс 2
2 Груз Боба Абако Мидория 1
2 ИИАЕ Чиано Кайтон 2
2 Райдер Системс Эдвардс Долтон 1
2 АвтоЖизнь Грэм Джеку 2
3 EMCOR Холдингс Эдвардс Кайтон 47
3 ИИАЕ Лидия Фискал 2
3 Груз Боба Абако Халтон 7
4 ИИАЕ Ода Чиано 2
4 EMCOR Холдингс Абако Эдвардс 22
4 Груз Боба Ода Кайтон 2
4 Химикаты ABC Джеку Эдвардс 9
4 ИнтерПласт Кайтон Мидория 4
5 Груз Боба Фискал Брэча 3
5 Науталис ООО Исландо Абако 1
5 Химикаты ABC Джеку Исландо 3
6 ИнтерПласт Абако Мидория 4
6 Химикаты ABC Брэча Лидия 2

Я старался убедиться, что нет ошибок, о которых я сам знаю, и даже удостоверился, что путь к файлу правильный, но не уверен, является ли это причиной ошибки или это что-то совершенно другое.

это код, который у меня есть на данный момент

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;

class Cargo {
    int time;
    String name;
    String source;
    String destination;
    int weight;

    public Cargo(int time, String name, String source, String destination, int weight) {
        this.time = time;
        this.name = name;
        this.source = source;
        this.destination = destination;
        this.weight = weight;
    }
}

class Vehicle {
    String type;
    String name;
    String startingLocation;

    public Vehicle(String type, String name, String startingLocation) {
        this.type = type;
        this.name = name;
        this.startingLocation = startingLocation;
    }
}

class CargoDataReader {
    ArrayList<Cargo> cargoList = new ArrayList<>();
    ArrayList<Vehicle> vehicleList = new ArrayList<>();

    public void readCargoFile(String filename) throws FileNotFoundException {
        Scanner scanner = new Scanner(new File(filename));

        while (scanner.hasNextLine()) {
            String line = scanner.nextLine();
            String[] parts = line.split(" ");
            Cargo cargo = new Cargo(Integer.parseInt(parts[0]), parts[1], parts[2], parts[3], Integer.parseInt(parts[4]));
            cargoList.add(cargo);
        }

        scanner.close();
    }

    public void readVehicleFile(String filename) throws FileNotFoundException {
        Scanner scanner = new Scanner(new File(filename));

        while (scanner.hasNextLine()) {
            String line = scanner.nextLine();
            String[] parts = line.split(" ");
            Vehicle vehicle = new Vehicle(parts[0], parts[1], parts[2]);
            vehicleList.add(vehicle);
        }

        scanner.close();
    }
}

public class Array_Lab {
    public static void main(String[] args) throws FileNotFoundException 
    
    {
        CargoDataReader reader = new CargoDataReader();
        reader.readCargoFile("#cargolist.txt");
        reader.readVehicleFile("#vehicles.txt");
        
        System.out.println("Список грузов:");
        for (Cargo cargo : reader.cargoList) {
            System.out.printf("Время: %d, Имя: %s, Источник: %s, Пункт назначения: %s, Вес: %d%n", 
                              cargo.time, cargo.name, cargo.source, cargo.destination, cargo.weight);
        }
        
        System.out.println("\nСписок транспортных средств:");
        for (Vehicle vehicle : reader.vehicleList) {
            System.out.printf("Тип: %s, Имя: %s, Начальное место: %s%n", 
                              vehicle.type, vehicle.name, vehicle.startingLocation);
        }
    }
}

Ответ или решение

Проблема, с которой вы столкнулись, представляет собой распространённую ошибку компиляции в Java — "Exception in thread ‘main’ java.lang.Error: Unresolved compilation problem:". Давайте разберёмся с возможными причинами и решением этой ошибки на примере вашего кода.

Основные причины ошибки компиляции

  1. Ошибки в синтаксисе: Даже малейшие опечатки, например, пропущенная запятая или неправильное написание методов, могут привести к ошибкам компиляции. В вашем коде, возможно, проблема связана с неверным использованием символов для ArrayList.

  2. Проблемы с импортом: Убедитесь, что вы импортируете классы правильно, в данном случае это ArrayList и Scanner.

  3. Некорректные символы: В вашем коде вы, возможно, использовали неверный символ для указания на тип ArrayList. Вместо ArrayList&lt;Cargo&gt; и ArrayList&lt;Vehicle&gt; должно быть ArrayList<Cargo> и ArrayList<Vehicle> соответственно. Это может случиться из-за копирования текста из редактора, который неправильно интерпретирует символы.

  4. Проблемы с файлами: Убедитесь, что указанные файлы #vehicles.txt и #cargo.txt существуют в правильном пути, и что в них нет лишних строк или некорректных данных.

Решение проблемы

Вот откорректированный код:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;

class Cargo {
    int time;
    String name;
    String source;
    String destination;
    int weight;

    public Cargo(int time, String name, String source, String destination, int weight) {
        this.time = time;
        this.name = name;
        this.source = source;
        this.destination = destination;
        this.weight = weight;
    }
}

class Vehicle {
    String type;
    String name;
    String startingLocation;

    public Vehicle(String type, String name, String startingLocation) {
        this.type = type;
        this.name = name;
        this.startingLocation = startingLocation;
    }
}

class CargoDataReader {
    ArrayList<Cargo> cargoList = new ArrayList<>();
    ArrayList<Vehicle> vehicleList = new ArrayList<>();

    public void readCargoFile(String filename) throws FileNotFoundException {
        Scanner scanner = new Scanner(new File(filename));

        // Пропуск первой строки, если это заголовок
        if(scanner.hasNextLine()) {
            scanner.nextLine();
        }

        while (scanner.hasNextLine()) {
            String line = scanner.nextLine();
            String[] parts = line.split(" ");
            Cargo cargo = new Cargo(Integer.parseInt(parts[0]), parts[1], parts[2], parts[3], Integer.parseInt(parts[4]));
            cargoList.add(cargo);
        }

        scanner.close();
    }

    public void readVehicleFile(String filename) throws FileNotFoundException {
        Scanner scanner = new Scanner(new File(filename));

        // Пропуск первой строки, если это заголовок
        if(scanner.hasNextLine()) {
            scanner.nextLine();
        }

        while (scanner.hasNextLine()) {
            String line = scanner.nextLine();
            String[] parts = line.split(" ");
            Vehicle vehicle = new Vehicle(parts[0], parts[1], parts[2]);
            vehicleList.add(vehicle);
        }

        scanner.close();
    }
}

public class Array_Lab {
    public static void main(String[] args) throws FileNotFoundException {
        CargoDataReader reader = new CargoDataReader();
        reader.readCargoFile("cargo.txt"); // Используйте правильные имена файлов
        reader.readVehicleFile("vehicles.txt");

        System.out.println("Cargo List:");
        for (Cargo cargo : reader.cargoList) {
            System.out.printf("Time: %d, Name: %s, Source: %s, Destination: %s, Weight: %d%n", 
                              cargo.time, cargo.name, cargo.source, cargo.destination, cargo.weight);
        }

        System.out.println("\nVehicle List:");
        for (Vehicle vehicle : reader.vehicleList) {
            System.out.printf("Type: %s, Name: %s, Starting Location: %s%n", 
                              vehicle.type, vehicle.name, vehicle.startingLocation);
        }
    }
}

Что было изменено:

  • Убедитесь, что вы используете правильные символы для ArrayList.
  • Добавлен код для пропуска первой строки (если это заголовок), который может вызвать ошибки при чтении данных.
  • Исправлены имена файлов — удалены символы #, так как они не являются частью стандартного имени файла.

Заключение

После внесения предложенных изменений ваш код должен компилироваться и выполняться правильно. Убедитесь, что файлы находятся в доступном для программы каталоге. Если проблемы сохраняются, внимательно проверяйте строки кода на наличие синтаксических ошибок или неверных символов.

Оцените материал
Добавить комментарий

Капча загружается...