不兼容类型:void 无法转换为 ArrayList<Integer>

问题描述 投票:0回答:1

我是编码新手。我有一个函数,它生成随机整数的 ArrayList,然后返回该 ArrayList。当我尝试将该 ArrayList 分配给我的主函数中的 ArrayList 时,出现此错误: Test.java:36: error: 不兼容的类型:void 无法转换为 ArrayList List=randomnumbers.GenerateArray(highestnum);

数组生成器类

import java.util.ArrayList; 
import java.util.Random;
  
class ArrayGenerator{

  //Create varibles and ArrayList and Random
  int highestnum;
  ArrayList <Integer> randomnumberArray = new ArrayList<>();
  Random random = new Random();
  

  //Constructor
  public ArrayGenerator(int highestnum){
    this.highestnum = highestnum;
  }

  //GenerateArray function
   public ArrayList<Integer> GenerateArray(int highestnum){

     //Loop to generate 20 random numbers
     for (int i = 0; i < 21; i++) {
          int randomInt = random.nextInt(highestnum);
            randomnumberArray.add(randomInt);

            
  }
     return randomnumberArray;
    
   }
}

部分主要功能

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

ArrayGenerator randomnumbers = new ArrayGenerator(highestnum);

  //Create array of random numbers and assign it to List

    List=randomnumbers.GenerateArray(highestnum);

我该如何解决这个问题?

我尝试这样做,但没有成功。

ArrayList <Integer> List = new ArrayList<>(randomnumbers.GenerateArray(highestnum));


java arrays arraylist
1个回答
0
投票

您的错误消息表明有一个方法返回

void
并且您尝试将此类方法的结果分配给
ArrayList
变量。您需要找到错误的确切位置,并将其追溯到代码尝试将
void
方法的结果分配给
ArrayList
变量的位置。您可以像这样创建
randomnumbers

ArrayGenerator randomnumbers = new ArrayGenerator(highestnum);

然后你就有了

List=randomnumbers.GenerateArray(highestnum);

由于这样的分配而失败。

如果我们尝试您的代码,那么它不会重现您的问题,因此您的代码实际上与您共享的代码至少略有不同。罪魁祸首将是您将

void
方法的结果分配给
ArrayList
的地方。您应该在调试器的帮助下找到罪魁祸首,然后就可以轻松修复。

© www.soinside.com 2019 - 2024. All rights reserved.