2016-09-09 3 views
-2

Я пытаюсь создать двумерный массив ArrayList, который будет хранить ints, строки & booleans.java - "int не может быть преобразован в ArrayList"

У меня есть до ввода первого int, но я получаю красную сквиглу, и ошибка «int не может быть преобразована в ArrayList».

ArrayList[][] qarray= new ArrayList [10][5]; 

    qarray[0][0]= 1; 

BTW, прибегая к помощи фразы «INT не может быть преобразован в ArrayList» дает мне ровно шесть результатов.

+2

«Я пытаюсь создать двумерный массив ArrayList, который будет хранить ints, string & booleans» <- подождите, что? У вас возникла проблема с дизайном – fge

+0

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

ответ

0

ArrayList [ ] [] qarray = new ArrayList [10] [5];

В основном ваш код создает 2-мерные объекты списка массивов (50 объектов списка массивов).

qarray [0] [0] = 1;

И вы пытаетесь назначить целое число, где вам нужно создать объект ArrayList. Он ожидает чего-то вроде

 qarray[0][0]= new ArrayList(); 

Однако это не соответствовало бы вашей цели.Следующий фрагмент кода может удовлетворить ваши цели:

ArrayList[] qarray = new ArrayList[10]; 
    qarray[0]= new ArrayList(); 
    qarray[0].add(1); 

    qarray[1]= new ArrayList(); 
    qarray[1].add(true); 

    qarray[2]= new ArrayList(); 
    qarray[2].add("hello"); 
0

Попробуйте так:

List<Integer> qarray = new ArrayList<>(); 
qarray.add(1); 
+0

Ищете многомерный массив. –

0
ArrayList<Integer> list = new ArrayList<>(); 

list.add(1); 
+0

Ищет многомерный массив. –

1

Ошибка правильно.

Тип массива - ArrayList. Вы можете вставить только массив ArrayLists в этот массив.

Если вы хотите сохранить int, ваша декларация должна быть.

int[][] qarray= new int [10][5]; 

А также, как кто-то прокомментировал, вы больше не можете хранить строки и булевы в этом массиве.

0

Согласно javadoc, вы не можете создавать массивы ArrayList. Вместо этого используйте 2D-массив.

Если вам нужна 2D ArrayList в любом случае, вы должны пытались таким образом:

ArrayList<ArrayList<Integer>> listOfLists = new ArrayList<>(); 

ArrayList<Integer> list1 = new ArrayList<>(); 
list1.add(1); 
list1.add(2); 

ArrayList<Integer> list2 = new ArrayList<>(); 
list2.add(5); 

listOfLists.add(list1); 
listOfLists.add(list2); 
0

Во-первых я считаю, что вам нужно массив и не ArrayList. 2d можно создать следующим образом.

int[][] arr = new int [10][10]; 

Ваша следующая проблема заключается в том, что вы пытались присвоить переменную int constant 1 переменной другого типа. В следующем примере показано, как назначить Int к элементу массива

arr [0][0] = 1; 
0

вы тусклый добавить Int, String и логическое значение, то вы можете использовать

ArrayList<ArrayList<Object>> listOfLists = new ArrayList<ArrayList<Object>>(); 

это поможет вам

+0

, когда вы использовали общий тип Obejct, вы можете сохранить в нем весь тип данных. –

0
ArrayList<Integer>[][] list = new ArrayList[10][10]; 
list[0][0] = new ArrayList<>(); 
list[0][0].add(new Integer(10); 

попробовать, как это.

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