2010-11-29 17 views
1

私はこれを修正しようとしましたが、私はこの問題に対する解決策を見つけることができないようです。このコードは、範囲内の素数を印刷するためのものですが、エラーを返すだけです。Javaエラー「未定義の名前」

Static Error: Undefined name 'PrimeNumbers

私を助けることができる人は誰ですか?

これは私のコードです:

import java.util.*; 

public class PrimeNumbers { 

    private List<Integer> 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() { 
    int i = 1; 
    for (Integer nextPrime:listOfPrimeNumbers) { 
     System.out.println("the " + i + "th prime is: " + nextPrime); 
     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 
} 
+2

コードをどのように起動しますか? –

+0

どのくらい正確に実行していますか? – stacker

+0

はい、どのように実行しますか?コード自体は問題なく、私のシステムでコンパイルして実行します。 – morja

答えて

3

を仮定すると、あなたは、あなたcd./projectにこの

./project 
    PrimeNumbers.java 
    PrimeNumbers.class 

のように整理して

java PrimeNumbers 

をタイプコード持っています - これは、あなたはパッケージを宣言していません(iaw:あなたのクラスはのです)。通常、パッケージ宣言があり、次に少し違って見えます。


ボーナス

この方法は、あなたが(内部?)のデータ構造と、彼への受信機のフルアクセス権を付与するので、ゲッターは良いアイデアですが、あなたは、コレクションを返す前に二度考える必要がありますそのコレクションの値を変更することができます。そして、生のタイプで宣言するべきではありません。ここではそれを実装するためのより良い方法です:

public List<Integer> getPrimes() { 
    return Collections.unmodifiableList(listOfPrimeNumbers); 
} 

今、受信機は、彼がのにInteger値のリストを取得し、結果を変更することはできませんことを知っています。

関連する問題