Java 类中的构造函数不能应用于给定类型
我得到了下面的代码,使用数组查找一些原始数。然而,当试图编译我的用户类回文ArrayUser时,它会说:“类中的构造函数不能应用于给定的类型” 必填项:int。 找到:没有参数。 原因:实际参数和形式参数列表的长度不同 但是,我已经向构造函数传递了一个int值(与我在蓝图中设计的方式相同)。我不太明白问题出在哪里。谢谢 这是我的两门课Java 类中的构造函数不能应用于给定类型,java,Java,我得到了下面的代码,使用数组查找一些原始数。然而,当试图编译我的用户类回文ArrayUser时,它会说:“类中的构造函数不能应用于给定的类型” 必填项:int。 找到:没有参数。 原因:实际参数和形式参数列表的长度不同 但是,我已经向构造函数传递了一个int值(与我在蓝图中设计的方式相同)。我不太明白问题出在哪里。谢谢 这是我的两门课 public class PalindromeArray { int arrLength; public PalindromeArray(int Inp
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]);
}
}
}
错误是因为您扩展了
回文数组
。这不是必需的。
子类(您的回文ArrayUser
)必须为构造函数提供一个int
若你们的超类并没有默认构造函数,那个么在你们的子类中,构造函数必须从超类中调用一个非默认构造函数。(
super(params)
)错误是因为您正在扩展具有显式构造函数的回文数组。必须为构造函数提供参数
因为B中没有默认构造函数,正如编译器错误消息所示。在类中定义构造函数后,将不包括默认构造函数。如果定义任何构造函数,则必须定义所有构造函数
阅读更多
免责声明:以上内容摘自文章为类创建构造函数时,不会为该类创建任何默认构造函数。因此,如果扩展该类,并且子类尝试调用其超类的无参数构造函数,那么将出现编译时错误
证明:
class Parent {
int i;
public Parent(int i) {
this.i=i;
}
}
class Child extends Parent {
int j;
public Child(int i, int j) {
super(i);
this.j=j;
}
public Child(int j) {
// here a call to super() is made, but since there is no no-arg constructor
// for class Parent there will be a compile time error
this.j=j;
}
}
编辑:
要回答您的问题,请执行此操作,不要将值arrLength
分配给arr[]
和check[]
,因为此时arrLength将是0
就这样宣布吧
int arr[];
boolean check[];
将输入赋值给arrLength
后,在构造函数中放入这些语句
arr = new int[arrLength];
check = new boolean [arrLength];
好啊我删除了行扩展回文数组,然后我的子类编译得很好。但是,当我运行它时,它会显示提示并完成。换句话说,它不会在提示后继续,也不会执行方法。这是为什么?@user2901128:这是因为arr[]和check[]在创建对象时的长度为0。请检查我的答案以获得解决方案。但正如我所说的。我删除了有问题的行扩展,并对类进行了良好编译。但是,它不会在提示后执行其余代码。为什么呢?
arr = new int[arrLength];
check = new boolean [arrLength];