Вопрос или проблема
Я писал этот код, чтобы позволить читать 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:". Давайте разберёмся с возможными причинами и решением этой ошибки на примере вашего кода.
Основные причины ошибки компиляции
-
Ошибки в синтаксисе: Даже малейшие опечатки, например, пропущенная запятая или неправильное написание методов, могут привести к ошибкам компиляции. В вашем коде, возможно, проблема связана с неверным использованием символов для
ArrayList
. -
Проблемы с импортом: Убедитесь, что вы импортируете классы правильно, в данном случае это
ArrayList
иScanner
. -
Некорректные символы: В вашем коде вы, возможно, использовали неверный символ для указания на тип
ArrayList
. ВместоArrayList<Cargo>
иArrayList<Vehicle>
должно бытьArrayList<Cargo>
иArrayList<Vehicle>
соответственно. Это может случиться из-за копирования текста из редактора, который неправильно интерпретирует символы. -
Проблемы с файлами: Убедитесь, что указанные файлы
#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
. - Добавлен код для пропуска первой строки (если это заголовок), который может вызвать ошибки при чтении данных.
- Исправлены имена файлов — удалены символы
#
, так как они не являются частью стандартного имени файла.
Заключение
После внесения предложенных изменений ваш код должен компилироваться и выполняться правильно. Убедитесь, что файлы находятся в доступном для программы каталоге. Если проблемы сохраняются, внимательно проверяйте строки кода на наличие синтаксических ошибок или неверных символов.