Constructeur de la classe ne peut pas être appliqué pour les types de donnée
J'ai le code suivant à l'aide de tableaux de trouver quelques prim numéros. Toutefois, lorsque vous essayez de compiler ma classe user PalindromeArrayUser il dit - "Constructeur de la classe ne peut pas être appliqué pour les types de donnée"
requis: int.
trouvé: pas d'arguments.
raison: les réels et les arguments formels listes diffèrent en longueur.
Cependant, j'ai passé au constructeur un int valeur (de la même manière qu'il a été conçu mon plan). Je n'ai pas très bien d'où vient le problème. Merci.
Voici deux de mes classes
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]);
}
}
}
Et c'est ma classe User d'où vient le problème. La classe ci-dessus compile bien.
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();
}
}
OriginalL'auteur user2901128 | 2013-11-05
Vous devez vous connecter pour publier un commentaire.
lorsque vous créez un constructeur pour une classe, il n'y aura pas de constructeur par défaut créé pour la classe. donc, si vous étendez la classe et si la sous-classe tente d'appeler le no-arg constructeur de sa super-classe, puis il y aura une erreur de compilation.
à démontrer:
EDIT:
pour répondre à votre question ce faire, ne pas affecter la valeur
arrLength
àarr[]
etcheck[]
comme arrLength serait0
à l'époque.donc juste de les déclarer comme ce
et dans le constructeur après l'affectation de l'entrée à
arrLength
mettre ces déclarations.vérifier mon édité réponse.
OriginalL'auteur Thirumalai Parthasarathi
Erreur est parce que vous étendez
PalindromeArray
.Ce n'est pas nécessaire.Sous-classe (votre
PalindromeArrayUser
) doit fournir constructeur avec un int.Si yous super classe n'ont pas de constructeur par défaut dans vous sous-classe constructeurs doivent invoquer l'un de non-constructeur par défaut de la classe super. (
super(params)
)son parce arr[] et cochez la case[] sont d'une longueur de 0 au moment de la création de l'objet de vérifier ma réponse pour la solution.
OriginalL'auteur Areo
Erreur est parce que vous êtes l'extension de
PalindromeArray
, qui a explicitement un constructeur. Vous devez fournir le constructeur avec argument.Lire plus ici
Avertissement: Le ci-dessus est tiré de l'article
OriginalL'auteur lazyprogrammer