В классе Main выбивает ошибку “The public type Main must be defined in its own file”

411
13 февраля 2017, 14:27
package app;
public class Museum1 {
private static int visitorsSum;
private String country, city, address;
private double rating;
private int visitors;

/**
* Empty constructor
 * @return 
*/
Museum1() {
}
/**
* Constructor with parameters (4 vars)
*
* @param country The country where the Museum
* @param city The city where the Museum
* @param address The address where the Museum
* @param rating The rating where the Museum
*/
Museum1(String country, String city, String address, double rating) {
this.country = country;
this.city = city;
this.address = address;
this.rating = rating;
}
/**
* Constructor with parameters (all vars)
*
* @param country The country where the Museum
* @param city The city where the Museum
* @param address The address where the Museum
* @param rating The rating where the Museum
* @param visitors The number of visitors
*/
Museum1(String country, String city, String address, double rating, int visitors) {
this.country = country;
this.city = city;
this.address = address;
this.rating = rating;
this.visitors = visitors;
setVisitorsSum(visitors);
}
/**
* Setters block
*/
public void setCountry(String country) {
this.country = country;
}
public void setCity(String city) {
this.city = city;
}
public void setAddress(String address) {
this.address = address;
}
public void setRating(double rating) {
this.rating = rating;
}
public void setVisitors(int visitors) {
this.visitors = visitors;
}
private static void setVisitorsSum(int visitorsSum) {
Museum1.visitorsSum += visitorsSum;
}
/**
* Getters block
*/
public String getCountry() {
return country;
}
public String getCity() {
return city;
}
public String getAddress() {
return address;
}
public double getRating() {
return rating;
}
public int getVisitors() {
return visitors;
}
@Override
public String toString() {
return "Museum{" +
"country='" + country + '\'' +
", city='" + city + '\'' +
", address='" + address + '\'' +
", rating=" + rating +
", visitors=" + visitors +
'}';
}
/**
* Displays the number of all visitors
*/
static void printStaticSum() {
System.out.println("Кількість відвідувачів за весь час: " + visitorsSum);
}
/**
* Displays the number of all visitors
*/
void printSum() {
System.out.println("Кількість відвідувачів за весь час: " + visitorsSum);
}
/**
* Changes values of variables
*
* @param country The country where the Museum
* @param city The city where the Museum
* @param address The address where the Museum
* @param rating The rating where the Museum
* @param visitors The number of visitors
*/
void resetValues(String country, String city, String address, double rating, int visitors) {
this.country = country;
this.city = city;
this.address = address;
this.rating = rating;
this.visitors = visitors;
}
}
public class Main {
//тут
public static void main(String[] args) {
// Initializing objects
Museum1 arsenal = new Museum1();
Museum1 pharmacy = new Museum1("Ukraine", "Lviv", "Stavropigijska, 3", 4.5);
Museum1 andreja = new Museum1("Ukraine", "Lviv", "Runok, 6", 5.0, 50);
//Displays information on the screen
System.out.println(arsenal.toString());
System.out.println(pharmacy.toString());
System.out.println(andreja.toString());
System.out.println();
Museum1.printStaticSum();
andreja.printSum();
}
}
Answer 1

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

Эта ошибка значит, что в Java каждый публичный класс должен быть в отдельном файле, а имя файла соответствовать имени класса. В одном файле с публичным классом может быть только приватный класс или вложенный класс

Связанный вопрос: "Сколько публичных классов может быть в одном файле"

Answer 2

Собственно ответ прост, нельзя в одном файле размещать два внешних public класса. Разбейте свой код на два файла (в каждом по классе) и эта ошибка исчезнет.

READ ALSO
Как сделать проверку в onStartCommand

Как сделать проверку в onStartCommand

Делаю запросы через startService в ServiceКак сделать проверку в onStartCommand

288
Android. Ошибка при конвертации Set<String> в String[]

Android. Ошибка при конвертации Set<String> в String[]

Пытаюсь достать данные из SharedPreference всей пачкой по ключу, но не получается конвертнуть результат в String[]

285
Inject не работает

Inject не работает

Как я понял не работает inject для private Logger logger;

457
Json не содержит список зависимых объектов

Json не содержит список зависимых объектов

Здравствуйте, столкнулся с проблемой: после конвертирования объекта в JSON, я не вижу в нем списка зависимых объектов, считанных из БДУ меня...

303