Что не так с вызываемым объектом в коде Java?

#java #oop #netbeans

#java #ооп #netbeans

Вопрос:

Я создаю меню с использованием кода Java, и когда я создаю новый объект в основном классе, он показывает мне эти две ошибки:

переменная admin не была инициализирована

и

несовместимая строка не может быть преобразована в double.

Вот класс Admin:

 public class Admin extends User {
    private String officNo;
    private String positon;

    public Admin(String username, String pass, String officeNo, String postion) {
        super(username, pass);
    }

    public void addProduct(Product p) {
        Store.products.add(p);
    }
}
  

Класс product:

 public class Product {
    private String name;
    private String ID;
    private double price;
    private String seller;

    public Product(String name, String id, double price, String sell) {
    }
}
  

Основной класс:

 public static void main(String[] args) {
    Admin admin;

    Scanner inter = new Scanner(System.in);
    System.out.println("Welcome to our Online Storenn if you are an admin enter 1 if user enter 2");
    int sw1 = inter.nextInt();
    switch(sw1) {
        case 1:
            System.out.println("choose one of the option below: n"
                   "(1) add a new product to the storen"  
                   "(2) delete one of the productsn"  
                   "(3) update one of the product attributesn"  
                   "(4) search if a certain product exits using its IDn"  
                   "(5) show the list of productsn" 
                   "(6) exit" );

         int sw2 = inter.nextInt();
         switch(sw2) {
             case 1:
                System.out.println("Enter product name: " );
                String name=inter.next();
                System.out.println("Enter product ID: " );
                String id=inter.next();
                System.out.println("Enter product price: " );
                String price=inter.next();
                System.out.println("Enter product seller: " );
                String seller=inter.next();

               admin.addProduct(new Product(name,id,price,seller);
                break; 
  

Ошибка появляется в этой строке:

 admin.addProduct(new Product(name,id,price,seller);
  

Пожалуйста, кто-нибудь может помочь?

Комментарии:

1. price Параметром является double , вы не можете просто использовать String для него. Вам нужно разобрать строку на double (и, надеюсь, добавить что-нибудь для обработки исключения, когда кто-то вводит неверный ввод).

2. сообщение об ошибке довольно четкое. Инициализируйте admin переменную и используйте double для определения цены

Ответ №1:

Вы не инициализировали переменную admin . Как минимум, вам нужно инициализировать его следующим образом:

 Admin admin = null; // or some other initial value
  

Однако в вашем случае вам нужно было бы фактически инициализировать его ненулевым значением, иначе вы получите NullPointerException в выделенной вами строке.

 Admin admin = new Admin();
  

Кроме того, вы считываете цену в виде строки, а затем передаете ее Product конструктору, который ожидает double . Сначала вам нужно будет преобразовать строку в double, а затем передать ее в конструкторе.

Комментарии:

1. Ошибок гораздо больше. Если это только одна ошибка, то она встречается очень редко.

2. Я добавил немного о строке в double issue. С этим кодом определенно существует ряд проблем.

3. если я создаю новый объект, он показывает мне ошибки с аргументами

4. … посмотрите на последний абзац этого ответа.