изменение Arraylist на массив в java - PullRequest
0 голосов
/ 17 июня 2020

Я новичок. Не могли бы вы помочь мне определить ошибку в следующей программе?

import java.util.*;
public class Main
{
    public static void main(String[] args) {
     ArrayList li = new ArrayList<>();
     li.add(1);
     li.add(2);
     li.add(3);

     System.out.println(li.get(1));

     int arr[] = new int[li.size()];
     for(int i=0; i<li.size(); i++)
     {
         arr[i] = li.get(i);
     }

     for(int item:arr)
     System.out.println(item);
    }
}

При выполнении указанной выше программы я получаю следующую ошибку:

Main.java:23: error: incompatible types: Object cannot be converted to int
     arr[i] = li.get(i);

Ответы [ 2 ]

4 голосов
/ 17 июня 2020

Вы используете необработанный ArrayList, поэтому он содержит Objects вместо Integers. Вы не можете присвоить тип Object типу int, поэтому вы получите сообщение об ошибке при попытке сохранить тип Object в массив int.

Передайте общий аргумент типа c на ArrayList, чтобы компилятор знал, что li - это ArrayList, содержащий Integers.

Измените

ArrayList li = new ArrayList<>();

на

ArrayList<Integer> li = new ArrayList<>();
0 голосов
/ 17 июня 2020

Вы не указали тип для ArrayList в объявлении. Таким образом, это было бы эквивалентно ArrayList<Object>, что означает, что любой тип объекта может быть добавлен в arrayylist. Есть два способа исправить это.

1. Объявите тип в объявлении arrayylist.

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

2. Приведите объект, который вы получаете из списка, к типу int

for(int i=0; i<li.size(); i++)
   {
       arr[i] = (int)li.get(i);
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...