Как избавиться от синтаксической ошибки на токене «public» в основном классе?
Я получаю синтаксическую ошибку в своем основном классе, когда вызываю конструктор из другого класса, который мне нужен для запуска основной программы. Эта программа ориентирована на наследование и соответствующий вызов конструкторов и аргументов. Это сообщение об ошибке, которое я получаю во время компиляции:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Syntax error on token "public", record expected after this token
at a6main.main(a6main.java:7)
Это строка кода, вызывающая ошибку:
PreferredCustomer c = new PreferredCustomer("Al", "222BurdSt", "2102223321", "46821",
"2000", true, "1000");
Остальной код можно найти ниже:
class person {
String Name;
String Address;
String Telephone;
person (String Name, String Address, String Telephone) {
this.Name = Name;
this.Address = Address;
this.Telephone = Telephone;
}
String getName() {
return Name;
}
String getAddress() {
return Address;
}
String getTelephone() {
return Telephone;
}
void setName(String Name) {
this.Name = Name;
}
void setAddress(String Address) {
this.Address = Address;
}
void setTelephone(String Telephone) {
this.Telephone = Telephone;
}
}
public class customer extends person {
String number;
boolean OnMailingList;
//constructor and getters and setters
customer (String Name, String Address, String Telephone, String number, boolean OnMailingList) {
//inherit persons information
super(Name, Address, Telephone);
this.number = number;
this.OnMailingList = OnMailingList;
}
String getnumber() {
return number;
}
void setnumber(String number) {
this.number = number;
}
boolean OnMailingList () {
return OnMailingList;
}
void setOnMailingList(boolean OnMailingList) {
this.OnMailingList = OnMailingList;
}
}
public class PreferredCustomer extends customer {
private int purchase;
double discount;
//public constructor so its accessible to main
//else ifs for certain percentage of discounts
//getters and setters for purchase and discount
//super to inherit other features from other classes
public int getpurchase() {
return purchase;
}
public double getdiscount () {
return this.discount;
}
public void setPurchase(int purchase) {
this.purchase = purchase;
}
public PreferredCustomer(String Name, String Address, String Telephone, String number, int pur,
boolean OnMailingList, double Discount, PreferredCustomer preferredCustomer) {
super(Name, Address, Telephone, number, OnMailingList);
this.purchase = pur;
preferredCustomer.discount = discount;
if (this.purchase>= 2000) {
this.discount = 10;
}else if (this.purchase>= 1500) {
this.discount = 7;
}else if (this.purchase>= 1000) {
this.discount = 6;
} else if (this.purchase >= 500) {
this.discount = 5;
}
}
}
public class a6main {
public static void main (String [] args) {
public PreferredCustomer() {
}
PreferredCustomer c = new PreferredCustomer("Al", "222BurdSt", "2102223321", "46821","2000", true, "1000");
System.out.println("Name: " + c.getName());
System.out.println("Address: " + c.getAddress());
System.out.println("Telephone number: " + c.getTelephone());
System.out.println("Customer ID: " + c.getnumber());
System.out.println("Amount spent: " + c.getpurchase());
System.out.println("On mailing list: " + c.OnMailingList());
System.out.println("Discount: " + c.getdiscount());
}
}
2 ответа
У вас здесь несколько ошибок. Я их исправил, программа запускается и выдаёт результат:
Имя: Al
Адрес: 222BurdSt Номер
телефона: 2102223321 Идентификатор
клиента: 46821 Потраченная
сумма: 2000
В списке рассылки: true
Скидка: 10.0
Удалите конструктор PreferredCustomer из основного метода. Это не может быть частью метода, это часть класса. Тогда конструктор PreferredCustomer уже присутствует в классе PreferredCustomer.
Надеюсь, классы вашего клиента и PreferredCustomer находятся в отдельных файлах? Если нет, поместите их в отдельные файлы с именами customer.java и PreferredCustomer.java. В
PreferredCustomer
конструктор класса, удалить
PreferredCustomer preferredCustomer
из аргументов. Это излишне: зачем передавать одного клиента другому? Есть ли у клиентов какие-либо отношения друг с другом? Теперь количество аргументов будет совпадать при вызове конструктора (и не использовать строки «2000», «1000», где должны быть целые числа):
PreferredCustomer c = new PreferredCustomer("Al", "222BurdSt", "2102223321", "46821",
2000, true, 1000);
Далее в конструкторе PreferredCustomer используйте
this
вместо
preferredCustomer
здесь:
this.discount = Discount;
и распечатать
Discount
с прописными буквами, как в подписи конструктора.
В результате код конструктора должен быть:
public PreferredCustomer(String Name, String Address, String Telephone, String number, int pur, boolean OnMailingList, double Discount) {
super(Name, Address, Telephone, number, OnMailingList);
this.purchase = pur;
this.discount = Discount;
if (this.purchase>= 2000) {
this.discount = 10;
} else if (this.purchase>= 1500) {
this.discount = 7;
} else if (this.purchase>= 1000) {
this.discount = 6;
} else if (this.purchase >= 500) {
this.discount = 5;
}
}
Основной метод в классе a6main:
public static void main (String [] args) {
PreferredCustomer c = new PreferredCustomer("Al", "222BurdSt", "2102223321", "46821", 2000, true, 1000);
System.out.println("Name: " + c.getName());
System.out.println("Address: " + c.getAddress());
System.out.println("Telephone number: " + c.getTelephone());
System.out.println("Customer ID: " + c.getnumber());
System.out.println("Amount spent: " + c.getpurchase());
System.out.println("On mailing list: " + c.OnMailingList());
System.out.println("Discount: " + c.getdiscount());
}
И позаботьтесь об именах, как указывали другие люди.
Имена ваших классов должны начинаться с заглавной буквы. MyFirstClass
Имена переменных должны начинаться с малого регистра. myFirstVariable
См. ниже:
public class Person {
private String name;
private String Address;
private String telephone;
public Person(String name, String address, String telephone) {
this.name = name;
this.address = address;
this.telephone = telephone;
}
//Create Getters
//Create Setters
}
public class Customer extends Person {
private String number;
private boolean onMailingList;
Customer(String name, String address, String telephone, String number, boolean onMailingList) {
super(name, address, telephone);
this.number = number;
this.onMailingList = onMailingList;
}
//Getters for number and for onMailingList
}
public class PreferredCustomer extends Customer {
private int purchase;
private double discount;
public PreferredCustomer(String name, String address, String telephone, String number, int pur,
boolean onMailingList, double discount) {
super(name, address, telephone, number, onMailingList);
this.purchase = pur;
this.discount = discount;
if (this.purchase >= 2000) {
this.discount = 10;
} else if (this.purchase >= 1500) {
this.discount = 7;
} else if (this.purchase >= 1000) {
this.discount = 6;
} else if (this.purchase >= 500) {
this.discount = 5;
}
}
//Getters for discount/purchase
//Setters for discount/purchase
}