#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. … посмотрите на последний абзац этого ответа.