我是编码新手。我有一个函数,它生成随机整数的 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));
您的错误消息表明有一个方法返回
void
并且您尝试将此类方法的结果分配给 ArrayList
变量。您需要找到错误的确切位置,并将其追溯到代码尝试将 void
方法的结果分配给 ArrayList
变量的位置。您可以像这样创建 randomnumbers
:
ArrayGenerator randomnumbers = new ArrayGenerator(highestnum);
然后你就有了
List=randomnumbers.GenerateArray(highestnum);
由于这样的分配而失败。
如果我们尝试您的代码,那么它不会重现您的问题,因此您的代码实际上与您共享的代码至少略有不同。罪魁祸首将是您将
void
方法的结果分配给 ArrayList
的地方。您应该在调试器的帮助下找到罪魁祸首,然后就可以轻松修复。