Java 将元素添加到数组中会提供错误代码

Java 将元素添加到数组中会提供错误代码,java,Java,我的代码有问题。我正在尝试制作一个素因子程序,我想删除重复项。但是,当我运行以下代码时,他们总是给我一个错误,我不明白为什么: public static void primeFactors(int n) { // Create array to filter out duplicates List<Integer> primeFactorList = Arrays.asList(); // Start timer to calculate how long

我的代码有问题。我正在尝试制作一个素因子程序,我想删除重复项。但是,当我运行以下代码时,他们总是给我一个错误,我不明白为什么:

public static void primeFactors(int n) {
    // Create array to filter out duplicates
    List<Integer> primeFactorList = Arrays.asList();
    // Start timer to calculate how long the program takes
    long startTime= System.nanoTime();

    // Print the number of 2s that divide n
    System.out.print("The prime factor(s) of that number:\n");
    // The following is a while loop running when the number is even
    while (n % 2 == 0) {
        primeFactorList.add(2);
        n /= 2;
    }

    // n is now odd, as the even while loop is over.
    // skip one element (Note i = i +2)

    for (int i = 3; i <= Math.sqrt(n); i += 2) {
        // While i divides n, print i and divide n
        while (n % i == 0) {
            primeFactorList.add(i);
            n /= i;
        }
    }

    // This condition is to handle the case when 'n' is a prime number greater than 2
    if (n > 2) {
        primeFactorList.add(n);
    }
    System.out.print(primeFactorList.stream().distinct().collect(Collectors.toList()));
    float endTime= System.nanoTime();
    float totalTime= endTime -startTime;
    System.out.print("\nThis program took " + (totalTime/1000000 + " milliseconds to run"));
}

public static void main(String[] args)
{
    System.out.println("This is a prime factor calculator. Please enter a number: ");
    Scanner intN = new Scanner(System.in);
    int nValue = intN.nextInt();
    if (nValue >= 0){
        int n = nValue;
        primeFactors(n);
    } else {
        System.out.println("Your value is negative, please restart the program and enter a positive integer");
    }

}

您不能以这种方式动态增加列表的大小

替换如下:

List<Integer> primeFactorList = Arrays.asList();

Arrays.asList()返回一个固定大小的列表。无法添加到它。Make
List primeFactorList=Arrays.asList()
be
List primeFactorList=new ArrayList()。这应该可以做到,您在该行中使用了一个空列表。“您不能以这种方式动态增加列表的大小。”问题不在于您扩展列表大小的方式,而在于以这种方式创建的列表无法扩展,句号。是的。这就是我的意思。无法扩展此人创建的列表。
List<Integer> primeFactorList = Arrays.asList();
List<Integer> primeFactorList = new ArrayList<Integer>();
This is a prime factor calculator. Please enter a number:                                                                                                   
45678                                                                                                                                                       
The prime factor(s) of that number:                                                                                                                         
[2, 3, 23, 331]                                                                                                                                             
This program took 0.0 milliseconds to run