(Java初学者):构造函数没有参数?
我试图做一个简单的程序,取三个数字的平均值,但我得到一个错误,说 “类平均值中的构造函数平均值不能应用于给定类型; 必需:无参数 找到:int,int,int“ 这是我的密码:(Java初学者):构造函数没有参数?,java,constructor,arguments,Java,Constructor,Arguments,我试图做一个简单的程序,取三个数字的平均值,但我得到一个错误,说 “类平均值中的构造函数平均值不能应用于给定类型; 必需:无参数 找到:int,int,int“ 这是我的密码: public class ave { public static void main(String args[]) { average object = new average(3,4,6); } } 这是我的构造函数代码 public class average { public double takeavera
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; }
}
构造函数的名称应该与类名相同,并且没有返回类型。 请尝试以下操作:
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);
}
}
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; }
}
如果您不想更改类Average
的代码,则只需从该类调用方法,如下所示:
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);
}
}
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; }
}
构造函数必须与类具有相同的名称 您必须创建:
public average(double a, double b, double c)
实际上,类中唯一存在的构造函数是没有参数的构造函数,它是自动创建的。您尚未定义接收这些参数(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; }
}
如果只想取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);
}
}
import java.util.*;
公共级大道{
公共静态void main(字符串[]args){
int有多少个;
双和=0.0;
双倍数,平均数;
扫描仪控制台=新扫描仪(System.in);
System.out.println(“您希望取多少个数字的平均值:”);
howMany=console.nextInt();
整数计数=1;
虽然(count您已经创建了“takeaverage”方法,但还没有调用它。也许您应该使用setter或使用构造函数传递三个数字并初始化,然后只调用“takeaverage”方法来获得一个双精度值,并将平均值分配给该双精度变量
您需要使用默认构造函数并从“average”类创建对象。下面是一个非常简单的解决方案:
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);
}
}
object.takeaverage(3,4,6);
这是一种方法,请确保您的类名使用Pascal大小写(即Average,AverageClass,这对于平均三个枚举的类来说确实是很长的名称),非常感谢!