【问题标题】:Constructor not working java构造函数不工作java
【发布时间】:2021-06-18 06:40:34
【问题描述】:

如果我尝试将参数放在以下行,则会出现错误

Sum s1 = new Sum(1,5,6);

当有一个名为 Sum 且带有 3 个参数的构造函数时,为什么会出现此错误

package test;

class Sum {
    double num1,num2,num3;
    double[] result = new double[4];
   double[] Sum(int num1,int num2, int num3) {
        this.num1 = num1;
        this.num2 = num2;
        this.num3 = num3; 
        result[0] = num1;
        result[1] = num2;
        result[2] = num3;
        result[4] = num1+ num2 + num3;
        return result;
    } 
}

public class Test {
    public static void main(String[] args) {
        Sum s1 = new Sum(1,5,6);
    }

}

【问题讨论】:

  • 您应该更清楚,“错误”并不是恰当的错误描述。

标签: java constructor


【解决方案1】:

您应该创建带有 3 个 int 参数的构造函数,如下所示:

...
private int num1, num2, num3;

public Sum(int a, int b, int c) {
    this.num1 = a;
    this.num2 = b;
    this.num3 = c;
}

【讨论】:

    【解决方案2】:

    构造函数不返回任何值。

    构造函数不支持任何返回类型。也不算作废。

    默认的隐式返回类型是声明它的类类型。

    【讨论】:

      【解决方案3】:

      这是错误的(长度为 4 的数组的索引从 0 到 3):

      result[4] = num1+ num2 + num3;
      

      改成

      result[3] = num1+ num2 + num3;
      

      除此之外,构造函数不应该有返回值。

      改变

      double[] Sum(int num1,int num2, int num3)
      

      Sum(int num1,int num2, int num3)
      

      并删除 return 语句。

      总而言之,构造函数应该是这样的:

      Sum(int num1,int num2, int num3) {
          this.num1 = num1;
          this.num2 = num2;
          this.num3 = num3; 
          result[0] = num1;
          result[1] = num2;
          result[2] = num3;
          result[3] = num1+ num2 + num3;
      } 
      

      【讨论】:

      • 对不起,我想我只是不小心编辑了你的答案
      【解决方案4】:
      double[] Sum(int num1,int num2, int num3) 
      

      不是构造函数

      你想要这个:

      public Sum(int num1,int num2, int num3) 
      

      这是一个构造函数的例子:

      http://www.homeandlearn.co.uk/java/class_constructor.html

      【讨论】:

      • 你快了一秒 :D
      【解决方案5】:

      你的构造函数有返回类型,构造函数没有返回语句。你需要改变

      public Sum(int num1,int num2, int num3) {
              this.num1 = num1;
              this.num2 = num2;
              this.num3 = num3; 
              result[0] = num1;
              result[1] = num2;
              result[2] = num3;
              result[3] = num1+ num2 + num3;
          } 
      

      【讨论】:

      • 谢谢...我怎么能忘记这一点
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-14
      • 1970-01-01
      • 2015-06-09
      • 2016-03-19
      相关资源
      最近更新 更多