ArrayList-Warnung - warning: [unchecked] unchecked call to add(E), auch die Datei wird nicht ausgeführt
Ich habe versucht, diesen code an die Arbeit für was fühlt sich wie ein Alter, zu diesem Zeitpunkt. es soll compute prime numbers in einer Strecke, und ich habe geschrieben eine Methode, diese zu drucken. Leider wird der code nicht kompilieren, unter Berufung auf die Warnung:
"warning: [unchecked] unchecked call to add(E) als Mitglied des raw-type java.util.Liste"
--Ich verstehe von googeln, dass diese Warnung ist für nicht deklarieren, welche Arten von Werten werden sollte, in Ihren erray, aber ich habe dies getan, und der Fehler scheint nur zu kommen, wenn ich versuche, mit den .add () - Funktion auf meiner array-Liste.
und wenn ich versuche zu laufen, es gibt es etwas mehr beängstigend Fehler
"Statische Fehler: Undefined name 'PrimeNumbers'
Ich denke, dass ich gegangen bin-code-blind an diesem Punkt und trotz mehrere versuche nicht herausfinden was ich falsch mache.
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
}
InformationsquelleAutor der Frage user476033 | 2010-11-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern Sie diese Zeile
zu
Diese wird elimiate die Warnung.
Bonus - Sie möchten möglicherweise verwenden Sie die erweiterte for-Schleife innerhalb der
print
Methode als alternative Ansatz:InformationsquelleAutor der Antwort Andreas_D
Haben Sie decalred primeNumbers eine untypisierte Liste, aber dann erstellt eine ArrayList mit Integer. Ändern Sie die Deklaration von primeNumbers:
Die for-Schleife, die Sie verwenden, um alle isPrimeNumber true nicht funktioniert, sollte die Bedingung
i<=initialCapacity
oder noch besser:In die print-Methode, die ich würde nicht die Mühe mit einem iterator und den überblick über die int i, verwenden Sie einfach eine normale for-Schleife.
Ohne zu wissen, welchen Befehl Sie verwenden, um den code zu erstellen und dann versuchen, und führen Sie es aus, es ist schwer zu diagnostizieren, Ihre runtime-Fehler. Stellen Sie sicher, dass Ihr Befehl Fenster ist im gleichen Verzeichnis wie Ihre .Klasse Datei.
InformationsquelleAutor der Antwort brain