2013-05-06 4 views
0

Я пытаюсь создать новый объект с именем item1, который принадлежит классу StockItem. Я уже создал конструктор для StockItem внутри файла класса, сделав все переменные общедоступными, однако теперь я пытаюсь создать его новый экземпляр, но хочу, чтобы переменные вводились пользователем с использованием класса сканера.Застревает при создании нового объекта

Как я могу создать новый экземпляр объекта objec? Я также создал класс сканера и получил его для чтения ввода, но не признаю, что ввод, который я вводил, является атрибутом нового элемента.

Любая помощь будет очень признательна, пожалуйста, спасибо.

StockItem Constructor: 

public StockItem (String itemID, String itemDesc, Double price, int quantity, int reOrderLevel) 
{  
     this.itemID = itemID; 
     this.itemDesc = itemDesc; 
     this.price = price; 
     this.quantity = quantity; 
     this.reOrderLevel = reOrderLevel; 
} 

Код для ввода сканера:

else if (i==1) 
    { 


     StockListInterface.doAddItem(item); 





     System.out.println("Add New Item"); 
     System.out.println("****************"); 

     Scanner scanner1 = new Scanner(System.in); 

     System.out.println("Enter ID :>");    
     String itemID = scanner1.nextLine(); 

     System.out.println("Enter Description :>"); 
     String itemDesc = scanner1.nextLine(); 

     System.out.println("Enter Price :>"); 
     String price = scanner1.nextLine(); 

     System.out.println("Enter Quantity :>"); 
     String quantity = scanner1.nextLine(); 

     System.out.println("Enter Re-Order Level :>"); 
     String reOrderLevel = scanner1.nextLine(); 

     System.out.println("Enter another? (Y/N) :>"); 



    } 
+0

Что вы пытались? Какую ошибку вы получили? – SLaks

ответ

1

Хорошо, хорошо для того, чтобы сделать новый объект, вы просто класс,

StockItem item = new StockItem("", "", 0.0, 0, 0); 

это будет загружать новый объект с помощью все нулевые переменные.

для того, чтобы использовать свой класс сканера для обновления каждого элемента, вы просто сделать следующее:

Для обновления идентификатора позиции

System.out.println("Enter ID :>");    
String itemID = scanner1.nextLine(); 
item.itemID = itemID; 

Надеется, что это помогает

1

Вы бы сделать это:

StockItem stockItem = new StockItem (itemID, itemDesc, Double.valueOf(price), Integer.valueOf(quantity), Integer.valueOf(reOrderLevel)); 
+0

, когда я делаю это, я получаю сообщение об ошибке: «Не могу найти символ».Он не распознает мои переменные. –

+0

это потому, что вы могли бы передать строки вместо двойных и значений int. –

0

Удалить

StockListInterface.doAddItem(item); 

Добавить после:

System.out.println("Enter another? (Y/N) :>"); 

код:

StockItem item = new StockItem(itemID, itemDesc, Double.valueOf(price), 
Int.ValueOf(quantity), Int.ValueOf(reOrderLevel)); 
StockListInterface.doAddItem(item); 

при условии StockListInterface.doAddItem получает аргумент Фондовый.

0

I have already created the constructor for a StockItem inside the class file, making all the variables public,

Это очень плохая идея. Эти переменные должны быть частными.

Вы делаете классическую ошибку новичков в смешивании пользовательских взаимодействий там, где они не принадлежат. Это двухступенчатый процесс:

  1. Получить все значения от пользователя
  2. создать экземпляр

Конструктор не должен знать или заботиться, где значение, передаваемые к нему пришло.

1

Затем создайте объект, используя конструктор;

Double priceVal = Double.parseDouble(price); 
int qty = Integer.parseInt(quantity); 
int level = Integer.parseInt(reOrderLevel); 

StockItem stock1 = new StockItem(itemID, itemDesc, priceVal, qty, level); 
Смежные вопросы