2016-10-15 8 views
0

Так что я пытаюсь выяснить, как заставить мой код работать, но я продолжаю получать nullError. Правильно ли я сохраняю свои данные? Вот мой код:Проект инвентаризации Java. Arrays

public class ProductTesterPart1{ 
public static void main(String[] args) { 
    Scanner userInput = new Scanner(System.in); 
    System.out.println("Please enter the product number, name, stock, and price in that order."); 

    List<ProductPart1> products = new ArrayList<ProductPart1>(); 
    String line = userInput.nextLine(); 
    while (!line.equals("quit")) { 
     if (line == null || line.trim().isEmpty()) { 
      products.add(new ProductPart1()); 
     } 
     else { 
      try { 
       Scanner s = new Scanner(line); 
       int number = s.nextInt(); 
       String name = s.next(); 
       int stock = s.nextInt(); 
       double price = s.nextDouble(); 

       products.add(new ProductPart1(number, name, stock, price)); 
      } 
      catch (NoSuchElementException e) { 
       System.out.print("Error: " + e.getMessage()); 
      } 
     } 
    } 

    for (ProductPart1 p : products) { 
      System.out.println(p.toString()); 
    } 
    } 

И, конечно же, что класс драйвера, вот мой объект:

public class ProductPart1 { 

//Declares variables 
private int productNumber; 
private String productName; 
private int productStock; 
private double productPrice; 

//Constructor 
public ProductPart1(){ 
    setNumber(0); 
    productName = "Null"; 
    productStock = 0; 
    productPrice = 0.0; 
} 

//Overload constructor 
public ProductPart1(int number, String name, int stock, double price){ 
    productNumber = number; 
    productName = name; 
    productStock = stock; 
    productPrice = price; 
} 

//set the number of the object 
public void setNumber(int newNumber){ 
    productNumber = newNumber; 
} 

//set the name of the object 
public void setName(String newName){ 
    productName = newName; 
} 

//set the stock of an object 
public void setStock(int newStock){ 
    productStock = newStock; 
} 

//set the price of an object 
public void setPrice(double newPrice){ 
    productPrice = newPrice; 
} 

//get the number of an object 
public int getNumber(){ 
    return getNumber(); 
} 

//get the name of an object 
public String getName(){ 
    return productName; 
} 

//get the stock of an object 
public int getStock(){ 
    return productStock; 
} 

//get the price of an object 
public double getPrice(){ 
    return productPrice; 
} 

//toString to bring the object together. 
public String toString(){ 
    return new String("Number: " + getNumber() + " Name: " + productName + " Price: " + productPrice + " Stock: " + productStock); 
} 
+0

Можете ли вы показать журналы консольных пожалуйста? –

+0

Это хороший –

+0

nullError: nullError: nullError: nullError: nullError: nullError: nullError: nullError: nullError: nullError: –

ответ

3

попробовать этот обновленный код:

public class ProductTesterPart1{ 
public static void main(String[] args) { 
    Scanner userInput = new Scanner(System.in); 
    System.out.println("Please enter the product number, name, stock, and price in that order."); 

    List<ProductPart1> products = new ArrayList<ProductPart1>(); 
    String line = userInput.nextLine(); 
    while (!line.equals("quit")) { 
     if (line == null || line.trim().isEmpty()) { 
      products.add(new ProductPart1()); 
     } 
     else { 
      try { 
       Scanner s = new Scanner(line); 
       int number = s.nextInt(); 
       String name = s.next(); 
       int stock = s.nextInt(); 
       double price = s.nextDouble(); 
       products.add(new ProductPart1(number, name, stock, price)); 
      } catch (NoSuchElementException e) { 
       System.out.print("Error: " + e.getMessage()); 
      } 
     } 
     if(userInput.hasNext()){ 
      line = userInput.nextLine(); 
     } else { 
      break; 
     } 
    } 

    for (ProductPart1 p : products) { 
      System.out.println(p.toString()); 
    } 
    } 
} 
+0

Спасибо! Оказывается, мой учитель хочет что-то WAAYYY проще, чем то, что я делаю. Мне просто нужно использовать простые конструкторы для создания объектов, хранения в массивах или чего-либо еще. Но спасибо! –

+0

@Tom большое вам спасибо :). см. обновленный и проверенный код. –

+0

Да, это лучше :). Кстати, вы также можете удалить проверку 'line == null'. Проверка «пустой» достаточно при использовании «Сканера». – Tom

0

Ваш код создает бесконечный цикл. Сначала вы читаете строку номера продукта, имени, акции и цены. Затем вы переходите в цикл while, где вы читаете эту строку, но никогда больше не меняете линейную переменную, поэтому она читается снова и снова бесконечно.

 Смежные вопросы

  • Нет связанных вопросов^_^