【问题标题】:java new constructor with array and int带有数组和int的java新构造函数
【发布时间】:2017-04-12 16:31:01
【问题描述】:

我正在练习 Java,我正在尝试构建一个构造函数,该构造函数接受一个 int[] 数组 和一个 int。

public static App(int[] name, int n) {}

现在在我的 main() 中,我正在尝试使用构造函数构建一个 new 对象,但我收到一条错误消息。

public static void main(String[] args) {
    int n;
    int[] name = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    App app1 = new App(name, n);

}

我收到的错误信息是:

"App 类中的构造函数 App 不能应用于给定类型; 必需:无参数;找到:int[],int; 原因:实际参数列表和形式参数列表的长度不同”

谁能解释一下这个错误是什么意思,我该如何更正我的代码?

【问题讨论】:

  • 构造函数不能有静态修饰符。
  • 构造函数应该 (a) 与类具有完全相同的名称(包括大写/小写),(b) 没有返回类型,(c) 没有 static 修饰符。
  • 构造函数不能有return 类型并且不能是static 你也不希望它是private

标签: java arrays constructor compiler-errors


【解决方案1】:
public static App(int[] name, int n) {}

Thae 变成了一个签名无效的静态方法,它不是构造函数。

根据你的描述,应该是

public App(int[] name, int n) {

}

【讨论】:

  • 我已在构造函数上从 public static 更改为 public,但仍然收到相同的错误消息。更清楚地说,我的构造函数现在读取public int[] app(int[] name, int n) {}
  • @as.beaulieu 不应该。至少一个不同的错误信息。可以发个截图吗?
  • @as.beaulieu 怎么又来了?它应该只是public App(int[] name, int n) {}
  • @as.beaulieu,app 是什么?你的班级不是叫App吗?请澄清。
  • @as.beaulieu 它不能有返回类型,甚至 void 请将您的构造函数更改为指定的答案
【解决方案2】:

构造函数没有static 修饰符,静态方法需要返回类型。您发布的代码无效。

public static App(int[] name, int n) {}

应该是

public App(int[] name, int n) {}

事实上,你的类根本没有构造函数——所以你得到了默认的(无参数)构造函数。

【讨论】:

    【解决方案3】:

    您的代码有两个问题,您需要解决这两个问题才能使其编译。

    (1) 构造函数不能有static关键字,所以去掉它

    (2)变量n没有初始化,所以在第一次使用之前先初始化如下:

    int n=1; //or any value you wanted
    

    【讨论】:

      猜你喜欢
      • 2015-01-19
      • 1970-01-01
      • 1970-01-01
      • 2013-08-17
      • 1970-01-01
      • 2020-10-03
      • 2017-02-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多