Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ArrayList警告-警告:[未选中]未选中的添加(E)调用,文件也不会运行_Java - Fatal编程技术网

Java ArrayList警告-警告:[未选中]未选中的添加(E)调用,文件也不会运行

Java ArrayList警告-警告:[未选中]未选中的添加(E)调用,文件也不会运行,java,Java,我一直在努力让这段代码在这个阶段能够正常工作。这意味着要计算一个范围内的素数,我已经写了一个方法来打印它们。不幸的是,代码将无法编译,并引用以下警告: “警告:[未选中]未选中将(E)添加为原始类型java.util.List的成员的调用” --我从谷歌上了解到,这个警告是因为没有声明您的勘误表中应该包含哪些类型的值,但我已经这样做了,而且这个错误似乎只有在我尝试在数组列表上使用.add()函数时才会出现 当我试着运行它时,它会给出一个更可怕的错误 “静态错误:未定义的名称‘素数’” 我想我在这

我一直在努力让这段代码在这个阶段能够正常工作。这意味着要计算一个范围内的素数,我已经写了一个方法来打印它们。不幸的是,代码将无法编译,并引用以下警告:

“警告:[未选中]未选中将(E)添加为原始类型java.util.List的成员的调用”

--我从谷歌上了解到,这个警告是因为没有声明您的勘误表中应该包含哪些类型的值,但我已经这样做了,而且这个错误似乎只有在我尝试在数组列表上使用.add()函数时才会出现

当我试着运行它时,它会给出一个更可怕的错误 “静态错误:未定义的名称‘素数’”

我想我在这一点上已经是代码盲了,尽管做了几次尝试,还是无法发现我做错了什么

import java.util.*;

public class PrimeNumbers { 

    private List listOfPrimeNumbers;  //add a member variable for the ArrayList
    public static void main(String args []){    
      PrimeNumbers primeNumberList = new PrimeNumbers(50);
      primeNumberList.print();  //use our new print method
    }

public PrimeNumbers (int initialCapacity) {
    listOfPrimeNumbers = new ArrayList<Integer>(initialCapacity/2);  //initialCapacity/2 is an easy (if not tight) upper bound
    long numberOfPrimes = 0; //Initialises variable numberOfPrimes to 0
    int start = 2;
    boolean[] isPrimeNumber = new boolean[initialCapacity + 1];

    for (int i=0;i==initialCapacity;i++) {//setting all values in array of booleans to true
    isPrimeNumber[i] = true;
    }
     while (start != initialCapacity)
        {
          if (isPrimeNumber[start])
          {
            listOfPrimeNumbers.add(start);
            //add to array list
            numberOfPrimes++;
            for (int i = start; start < initialCapacity; i+=start)
            {
              isPrimeNumber[i] = false;
            }
          }
          start++;
        }
    }

 public void print()  //add this printout function
 {
     int i = 1; 
     Iterator iterator = listOfPrimeNumbers.listIterator();
     while (iterator.hasNext())
     {
          System.out.println("the " + i + "th prime is: " + iterator.next());
          i++;
     }
     //or just System.out.println(listOfPrimeNumbers);, letting ArrayList's toString do the work.  i think it will be in [a,b,c,..,z] format
 }

 public List getPrimes() {return listOfPrimeNumbers;} //a simple getter isnt a bad idea either, even though we arent using it yet
}
import java.util.*;
公共类素数{
private List ListOfPrimeNumber;//为ArrayList添加成员变量
公共静态void main(字符串args[]){
素数primeNumberList=新素数(50);
primeNumberList.print();//使用新的打印方法
}
公共素数(int initialCapacity){
listOfPrimeNumbers=newArrayList(initialCapacity/2);//initialCapacity/2是一个简单的上限(如果不是很紧的话)
long numberOfPrimes=0;//将变量numberOfPrimes初始化为0
int start=2;
布尔值[]isPrimeNumber=新布尔值[initialCapacity+1];
对于(inti=0;i==initialCapacity;i++){//将布尔数组中的所有值设置为true
isPrimeNumber[i]=真;
}
while(启动!=初始容量)
{
if(isPrimeNumber[开始])
{
添加(开始);
//添加到数组列表
numberOfPrimes++;
用于(int i=启动;启动<初始容量;i+=启动)
{
isPrimeNumber[i]=假;
}
}
启动++;
}
}
public void print()//添加此打印输出函数
{
int i=1;
迭代器迭代器=listOfPrimeNumbers.listIterator();
while(iterator.hasNext())
{
println(“第“+i+”个素数是:“+iterator.next()”);
i++;
}
//或者只是System.out.println(ListofPrimeNumber);,让ArrayList的toString完成工作。我认为它将采用[a,b,c,…,z]格式
}
public List getPrimes(){return listOfPrimeNumbers;}//一个简单的getter也不是一个坏主意,尽管我们还没有使用它
}
更改此行

private List listOfPrimeNumbers;  //add a member variable for the ArrayList


您已将素数标记为非类型化列表,但随后创建了整数数组列表。请将素数声明更改为:

private List<Integer> listOfPrimeNumbers; 
在您的print方法中,我不需要麻烦使用迭代器并跟踪int I,只需使用普通for循环即可


如果不知道您正在使用什么命令来生成代码,然后尝试运行它,则很难诊断您的运行时错误。请确保您的命令窗口与.class文件位于同一目录中。

事实上,它应该进行编译-除了完整的类文件外,您只会收到一条警告。相同的代码不会警告meIt will com但是给我一个警告,是的!:)
public void print() {
  int i = 1; 
  for (Integer nextPrime:listOfPrimeNumbers) {
      System.out.println("the " + i + "th prime is: " + nextPrime);
      i++;
  }
}
private List<Integer> listOfPrimeNumbers; 
Arrays.fill(isPrimeNumber, true);