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()代码>返回一个固定大小的列表。无法添加到它。MakeList primeFactorList=Arrays.asList()
beList 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