【问题标题】:(Beginner Java): Constructor no arguments?(Java 初学者):构造函数没有参数?
【发布时间】:2016-07-28 14:06:30
【问题描述】:

我正在尝试制作一个取三个数字的平均值的简单程序,但我收到一条错误消息,提示

"类中的构造函数平均值不能应用于给定类型; 必需:无参数 找到:int,int,int"

这是我的代码:

public class ave {
 public static void main(String args[]) {
average object = new average(3,4,6);
 }
}

这是我的构造函数代码

public class average {
public double takeaverage(double first, double second, double third) {
 double ave = (first + second + third)/3;
 System.out.println(ave);
 return ave; } 
} 

【问题讨论】:

  • object.takeaverage(3,4,6); 这是一种方法
  • 确保对类名使用 Pascal 大小写(即 Average、AverageClass、ThisIsAReallyLongNameForAClassThatAveragesThreeNumbers)

标签: java constructor arguments


【解决方案1】:

构造函数的名称应该与类名相同并且没有返回类型。 请尝试以下操作:

public class ave {
 public static void main(String args[]) {
Average object = new Average(3,4,6);
 }
}


public class Average {
    public Average(double first, double second, double third){
        double ave = (first + second + third)/3;
        System.out.println(ave);
    } 
} 

如果您不想更改 Class Average 的代码,则只需调用该类中的方法,如下所示:

public class ave {
 public static void main(String args[]) {
Average object = new Average();
 double Avg = object.takeaverage(3,4,6);
 }
}


public class Average {
public double takeaverage(double first, double second, double third) {
 double ave = (first + second + third)/3;
 System.out.println(ave);
 return ave; } 
} 

【讨论】:

  • 非常感谢!
【解决方案2】:

构造函数必须与类同名。

你必须创造:

public average(double a, double b, double c)

实际上,类中唯一存在的构造函数是没有参数的构造函数,它是自动创建的。

【讨论】:

    【解决方案3】:

    您尚未定义接收这些参数 (3, 4, 6) 的构造方法。 你必须像这样创建一个构造方法:

    public class average {
    public double result
    
    public average(int a, int b, int c){
    this.result=this.takeaverage(double(a),double(b),double(c))
    }
    public double takeaverage(double first, double second, double third) {
     double ave = (first + second + third)/3;
     System.out.println(ave);
     return ave; } 
    } 
    

    【讨论】:

      【解决方案4】:

      如果你只想取 3 个数字的平均值,你可以在不创建平均对象的情况下做到这一点。我已经在下面展示了:

      import java.util.*;
      public class Ave {
          public static void main(String[] args){
              double number1, number2, number3;
              Scanner console = new Scanner(System.in);
              System.out.println("Enter number 1:");
              number1 = console.nextDouble();
              System.out.println("Enter number 2:");      
              number2 = console.nextDouble();
              System.out.println("Enter number 3:");
              number3 = console.nextDouble();
              double average = (number1 + number2 + number3)/3;
              System.out.println("The average is: " + average);
          }
      }
      

      上述程序要求用户输入 3 个数字并打印出他们的平均值。请注意,它仍然有点多余。您也可以修改它以求任意数字的平均值,如下所示:

      import java.util.*;
      public class Ave {
          public static void main(String[] args){
              int howMany;
              double sum = 0.0;
              double number, average;
              Scanner console = new Scanner(System.in);
              System.out.println("How many numbers do you want to take average of:");
              howMany = console.nextInt();
              int count = 1;
              while(count <= howMany){
                  System.out.println("Enter number " + count);
                  number = console.nextDouble();
                  sum += number;
                  count++;
              }
              average = sum/howMany;
              System.out.println("The average is: " + average);
          }
      }
      

      您可以修改程序以取 3 个数字的平均值,而无需询问用户,其中双打 number1、number2 和 number3 将被赋予数字(硬编码,这通常不是一个好的做法)。

      【讨论】:

        【解决方案5】:

        您已创建“takeaverage”方法但尚未调用它。也许您应该使用 setter 或使用构造函数传递三个数字并进行初始化,然后只为 double 值调用“takeaverage”方法并获取分配给该 double 变量的平均值。

        您需要使用默认构造函数并从“平均”类创建对象。下面是一个非常简单的解决方案:

        public class average {
             public double takeaverage(double first, double second, double third) {
                 double ave = (first + second + third)/3;
                 System.out.println(ave);
                 return ave; 
             } 
        } 
        
        
        
        
         //main class
            public class ave{
              public static void main(String []args){
                    average object = new average();
                    object.takeaverage(3,4,6);
                 }
        
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-03
          • 1970-01-01
          • 1970-01-01
          • 2014-05-19
          • 2014-12-25
          相关资源
          最近更新 更多