2014-11-03 3 views
0

Я пытаюсь создать небольшую систему POS. И в этом мне нужно добавить разные элементы в список до «создания продажи» (который позже я буду вставлять в базу данных в виде отдельных инструкций INSERT)Добавление строк значений в текстовое поле при нажатии кнопки

Сейчас у меня проблема с кнопкой, которая добавляет продажи в текстовую область. Он работал нормально, когда у меня была только одна продажа. Но начал давать NullPointerException, когда я сделал значения в массив и петельные его ..

Вот мой код:

if (action.getSource() == btnAdd) 
     { 
      //values 
      String[] salesNo= null; 
      String[] itemNo = null; 
      String[] staffNo = null; 
      String[] customerNo = null; 
      Date date= new Date(); 
      int[] quantity = null; 
      double[] finalprice = null; 


      //inserting itemno------------------------ 
      String findItemNoCommand = "SELECT itemNo FROM `item` WHERE itemName = '" + itemList.getSelectedItem() + "'"; 
      try 
      { 
       itemNo[count] = viewValue(conn, findItemNoCommand); 
      } 
      catch (SQLException e) 
      { 
       e.printStackTrace(); 
      } 

      //inserting customerno------------------------ 
      customerNo[count] = (String) customerList.getSelectedItem(); 


      staffNo[count] = "null"; // to be developed 

      //checking and insertion of quantity------------------------ 
      double tempquantity = Double.parseDouble(quantityText.getText()); 
      if(tempquantity % 1 == 0) 
      { 
       quantity[count] = (int) tempquantity; //Checking if the value is an integer 
      } 
      else 
      { 
       JOptionPane.showMessageDialog(alphaPOS, 
         "You need to enter a whole number for Quantity", 
         "ERROR", 
         JOptionPane.ERROR_MESSAGE); 
      } 

      //calculating final price from price of item------------------------ 
      String tempprice = null; 
      String findPriceCommand = "SELECT sellingprice FROM `item` WHERE itemNo = '" + itemNo + "'"; 
      try 
      { 
       tempprice = viewValue(conn, findPriceCommand); 
      } 
      catch (SQLException e) 
      { 
       e.printStackTrace(); 
      } 
      Double price = Double.parseDouble(tempprice); 
      finalprice[count] = quantity[count] * price; 
      //------------------------------------------------------------------ 


      salesdata[count++] = new Sales(salesNo[count], itemNo[count], staffNo[count], customerNo[count], date, quantity[count], finalprice[count]); 

      salesTextArea.setText(" "+"\n"); 
      int i =0; 

      while (salesdata[i] != null) 
      { 
       salesTextArea.insert("\t" + salesdata[i].finalprice, 2); 
       salesTextArea.insert("\t" + salesdata[i].quantity, 2); 
       salesTextArea.insert("\t" + dateFormat.format(salesdata[i].date), 2); 
       salesTextArea.insert("\t" + salesdata[i].customerNo, 2); 
       salesTextArea.insert("\t" + salesdata[i].staffNo, 2); 
       salesTextArea.insert("" + salesdata[i].itemNo, 2); 
       //salesTextArea.insert("\n", 2); 
       i++; 
      } 
      salesTextArea.insert("Item No \t StaffNo\t CustomerNo \t Date and Time \t\t Quantity \t Final Price", 0);   } 

salesdata объявлен здесь: static Sales salesdata[] = new Sales[50];

Код компилируется нормально, но я получаю исключение. Почему? Приветствуется любая помощь или подсказки относительно того, что я делаю неправильно :)

ответ

1

Это происходит потому, что вы объявляете свой массив как null, а затем сразу же пытаетесь записать для него значение.

String[] itemNo = null; 
itemNo[count] = viewValue(conn, findItemNoCommand); 

Нужно инициализировать его некоторым непустым значением, если вы хотите сохранить что-либо в нем.

+0

Что еще я могу инициализировать? Невозможно инициализировать его как «» либо. – Tsar

+0

@ShifaTsar Вы хотите инициализировать его следующим образом: 'String [] itemNo = new String [size];', предполагая, что вы знаете, какой размер он должен быть. Если вы этого не сделаете, я бы предложил посмотреть в 'ArrayList', который может расти по мере его использования. – resueman

+0

А, спасибо. Я продолжаю забывать ArrayList. :) – Tsar

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