Как избавиться от синтаксической ошибки на токене «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
}
Другие вопросы по тегам