6

配列を使用していくつかのプリム番号を見つける次のコードを取得しました。ただし、ユーザークラス PalindromeArrayUser をコンパイルしようとすると、「クラス内のコンストラクターは指定された型に適用できません」と表示されます

必須: int. 見つかりました: 引数がありません。理由: 実引数リストと仮引数リストの長さが異なります。

ただし、コンストラクターに int 値を渡しました (設計図で設計したのと同じ方法です)。問題がどこから来たのかよくわかりません。ありがとう。

これが私の2つのクラスです

 public class PalindromeArray 
 {

int arrLength;

public PalindromeArray(int InputValue) 
{
    arrLength = InputValue;
}


int arr[] = new int[arrLength];
boolean check[] = new boolean [arrLength];


public void InitializeArray()  
{

    for (int k = 2; k < arr.length; k++)
    {
        arr[k] = k;
        check[k] = true;

    }   
}

public void primeCheck()  
{

    for (int i = 2; i < Math.sqrt(arr.length - 1); i++ )
    {
        if (check[i] == true)
        {
        for (int j = 2; j < arr.length; j++)
          {
            if (j % i == 0)
                {
                     check[j] = false;
                     check[i] = true;
                }
          }
        }   

    }   
}

public void PrintArray() 
{
    for (int k = 2; k < arr.length; k++)
    {
        if ((!check[k]) == false)
            System.out.println(arr[k]);

    }
}

   }

そして、これが問題の原因となる私の User クラスです。上記のクラスは正常にコンパイルされます。

 import java.io.*;

 public class PalindromeArrayUser extends PalindromeArray
 {
public static void main(String argv[]) throws IOException 
{
    BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

    System.out.println("Please enter the upper bound.");

    String line = input.readLine();

    int InputUser = Integer.parseInt(line);
                                     // this is where I pass the same int type as I  
                                                  // constructed it
    PalindromeArray palindrome = new PalindromeArray(InputUser);
    palindrome.InitializeArray();
    palindrome.primeCheck();
    palindrome.PrintArray();


}

 }
4

3 に答える 3

3

エラーは拡張するためですPalindromeArray。これは必要ありません。サブクラス (あなたのPalindromeArrayUser) は、コンストラクターに 1 つの int を提供する必要があります。

スーパークラスにデフォルトのコンストラクターがない場合、サブクラスのコンストラクターは、スーパークラスからデフォルト以外のコンストラクターのいずれかを呼び出す必要があります。( super(params))

于 2013-11-05T12:30:02.837 に答える