2013-12-15 8 views
1

У меня есть arraylist из целых чисел, который называется stockList.Пытается преобразовать arraylist целых чисел в примитивный тип int []

Я хочу, чтобы примитивный тип int [] stockListFinal был создан из массива.

Код:

public class Warehouses { 

    ArrayList<Warehouse> warehouses = new ArrayList<Warehouse>(); 
    ArrayList<Integer> stockList = new ArrayList<Integer>(); 
    ArrayList<String> locationsList = new ArrayList<String>(); 

    int[] stockListFINAL; 
    int[] locationsListFINAL; 

    public Warehouses() { 

     addWarehouses(); 

     stockList(); 

     locationList();  
    } 

    public void addWarehouses() { 
     //DATABASE WOULD BE SEARCHED FOR EACH PRESENT RECORD AND ADDED HERE 
     //FOR SIMPLICITY I HAVE DONE THIS MANUALLY 

     warehouses.add(new Warehouse("W1", 20, "RM13 8BB")); 
     warehouses.add(new Warehouse("W2", 28, "RM13 8BB")); 
     warehouses.add(new Warehouse("W3", 17, "RM13 8BB")); 
    } 

    public void stockList() { 

     for(Warehouse warehouse : warehouses) { 

      Integer stock = warehouse.getStock();   
     } 

     stockListFINAL = convertIntegers(stockList); 
    } 

    public static int[] convertIntegers(List<Integer> integers) 
    { 
     int[] ret = new int[integers.size()]; 

     for (int i=0; i < ret.length; i++) 
     { 
      ret[i] = integers.get(i); 
     } 
     return ret; 
    } 

    public void locationList() { 
     for(Warehouse warehouse : warehouses) { 

      String location = warehouse.getLocation(); 
     } 
    } 
} 


class Warehouse 
{ 
    private String warehouseID; 
    private int warehouseStock; 
    private String location; 

    /** 
    * Constructor for objects of class Warehouse 
    */ 
    public Warehouse(String warehouseID, int warehouseStock, String location) 
    { 
     // initialise instance variables 
     this.warehouseID = warehouseID; 
     this.warehouseStock = warehouseStock; 
     this.location = location; 
    } 

    public int getStock(){ 
     return warehouseStock; 
    } 

    public String getLocation() { 
     return location; 
    } 
} 

stockListFinal однако возвращает пустой.

Что здесь произошло?

+1

Ну, да, вы не называется 'addStock' еще ... –

+0

К сожалению В методе вызывается typo - addStock. – user2863323

+2

Какой метод? Возможно, вам следует показать весь класс, а не просто фрагменты. –

ответ

0

Вы не позвонили addStock(), поэтому список пуст.

addStock();          // this was missing, and it 
                // should probably take the 
                // List as an argument. 
int[] stockListFINAL = convertIntegers(stockList); 

Я тогда проверен с этим кодом

// No change. 
public static int[] convertIntegers(
    List<Integer> integers) { 
    int[] ret = new int[integers.size()]; 

    for (int i = 0; i < ret.length; i++) { 
    ret[i] = integers.get(i).intValue(); 
    } 
    return ret; 
} 

// Made static, added List as argument. 
public static void addStock(List<Integer> stockList) { 
    stockList.add(20); 
    stockList.add(30); 
} 

public static void main(String s[]) { 
    ArrayList<Integer> stockList = new ArrayList<Integer>(); 
    addStock(stockList); 
    int[] stockListFINAL = convertIntegers(stockList); 
    System.out.println(java.util.Arrays.toString(stockListFINAL)); 
} 

И это выводит -

[20, 30] 

Вы никогда не добавлял Шток (ы) в свой список (ов).

+0

См. Edit, addStock() вызывается в кодированном методе. Извиняюсь. – user2863323

0

Если вы запустите main в указанном ниже классе, вы увидите, что находится int[]. Это не так, как я рекомендую использовать, но я пытался оставаться как можно ближе к примеру, как это возможно:

import java.util.ArrayList; 
import java.util.List; 

public class SE 
{ 
    final static ArrayList<Integer> stockList = new ArrayList<Integer>(); 

    public static int[] convertIntegers(final List<Integer> integers) 
    { 
     final int[] ret = new int[integers.size()]; 

     for (int i = 0; i < ret.length; i++) 
     { 
      ret[i] = integers.get(i).intValue(); 
     } 
     return ret; 
    } 

    public static void addStock() 
    { 
     stockList.add(20); 
     stockList.add(30); 
    } 

    public static void main(final String[] args) 
    { 
     addStock(); 
     final int[] stockListFINAL = convertIntegers(stockList); 
     for (int i = 0; i < stockListFINAL.length; i++) 
     { 
      System.out.println(String.format(" For location %d in the int[] the value is %d", i, stockListFINAL[i])); 
     } 
    } 
} 
+0

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

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