Как исправить эту ошибку в java?
вот публичный класс
package itproger;
public class Main {
public static void main(String[] args) {
Transport bmw = new Transport();
bmw.speed = 250.5f;
bmw.weight = 2453;
bmw.color = "Green";
bmw.coordinate = new byte[] {0, 0, 0};
Transport truck = new Transport();
truck.speed = 130;
truck.weight = 5002;
truck.color = "red";
truck.coordinate = new byte[] {100, 0, 100};
System.out.println("Truck speed: " + truck.speed + " BMW speed: " + bmw.speed);
}
}
вот другой класс
package itproger;
public class Transport {
public float speed;
public int weight;
public String color;
public byte[] coordinate;
},
и выдает такую ошибку:
tempCodeRunnerFile.java:3: error: class Main is public, should be declared in a file named Main.java
public class Main {
^
tempCodeRunnerFile.java:6: error: cannot find symbol
Transport bmw = new Transport();
^
symbol: class Transport
location: class Main
tempCodeRunnerFile.java:6: error: cannot find symbol
Transport bmw = new Transport();
^
symbol: class Transport
location: class Main
tempCodeRunnerFile.java:12: error: cannot find symbol
Transport truck = new Transport();
^
symbol: class Transport
location: class Main
tempCodeRunnerFile.java:12: error: cannot find symbol
Transport truck = new Transport();
^
symbol: class Transport
location: class Main
5 errors,
что с этим делать??
пхп наше всё
емае, я только на lua
прив альберт
Эти ошибки возникают из-за того, что ваш редактор кода неправильно компилирует проект, состоящий из нескольких файлов. В Java действуют строгие правила именования, и используемое вами расширение нарушает их.
Причины ошибок
Ваша первая ошибка связана с тем, что в Java публичный класс обязан находиться в файле с точно таким же именем. Расширение Code Runner в VS Code создает для запуска временный файл tempCodeRunnerFile.java, что вызывает конфликт имен. Вторая ошибка «cannot find symbol» появляется потому, что компилируется только один временный файл, и компилятор просто не знает о существовании вашего второго класса Transport.^1
Правильное решение
Для многофайловых проектов необходимо соблюдать структуру папок и использовать правильные инструменты компиляции. Создайте папку с именем itproger (так как у вас указан пакет package itproger;) и поместите в нее два отдельных файла: Main.java и Transport.java. Удалите расширение Code Runner и установите официальный пакет "Extension Pack for Java" от Microsoft, после чего запускайте код кнопкой Run прямо над методом main, чтобы оба файла скомпилировались вместе.^2
Альтернативное решение
Если вы хотите быстро протестировать код без настройки структуры проекта, вы можете объединить оба класса в один файл. Для этого переименуйте ваш текущий файл строго в Main.java. Затем поместите код класса Transport в этот же файл ниже Main, обязательно удалив у него слово public, так как в одном файле Java допускается только один публичный класс.^3
package itproger;
public class Main {
public static void main(String[] args) {
Transport bmw = new Transport();
bmw.speed = 250.5f;
bmw.weight = 2453;
bmw.color = "Green";
bmw.coordinate = new byte[] {0, 0, 0};
Transport truck = new Transport();
truck.speed = 130;
truck.weight = 5002;
truck.color = "red";
truck.coordinate = new byte[] {100, 0, 100};
System.out.println("Truck speed: " + truck.speed + " BMW speed: " + bmw.speed);
}
}
class Transport { // Убрали слово public
public float speed;
public int weight;
public String color;
public byte[] coordinate;
}