【问题标题】:Having trouble calling a method from a class从类中调用方法时遇到问题
【发布时间】:2019-09-18 11:18:30
【问题描述】:

我正在尝试通过调用我在课堂上创建的方法来完成我的项目。我收到一个错误“类中的构造函数不能应用于给定类型。

这是我的主要内容

public static void main(String[] args) {
    double[] grades = {98.7, 77.9, 90, 83, 67, 33, 81, 90 };
    HomeworkGrades cls = new HomeworkGrades();

这是我的课

public class HomeworkGrades {
    private double[] grades;
    double [] HWgrades = { 1, 2, 3, 4, 5, 6, 7, 8};

    public HomeworkGrades(double [] gradesEarned)
    {
        grades= gradesEarned;  
        for (int i =0; i<gradesEarned.length;i++)
            HWgrades =gradesEarned;
    }
     public double calcAverage()
    {
        int sum =0;
        for(int i =0; i<HWgrades.length; i++)
        {
            sum = (int) (sum + HWgrades[i]);
        }
        double average = sum / (double)HWgrades.length;
        return average;
    }
     public static  double calcLowestGrade(double[]a, double total)
     {
         double temp;
         double size;
         double  array[] = { 1, 2, 3, 4, 5, 6, 7, 8};
         size = array.length;
         for (int i =0; i <size; i++)
         {
             for(int j=i+1;j<size;j++)
             {
                 if(array[i]>array[j])
                 {
                     temp=array[i];
                     array[i] = array[j];
                     array[j] = temp;
                 }
             }
         }
         System.out.println("Lowest grade is " + array[0]);
         return array[0];
     }    
}

【问题讨论】:

  • 您的HomeworkGrades 构造函数将double[] 作为参数,但您没有将grades 数组作为参数传递。
  • HomeworkGrades cls = new HomeworkGrades(grades ); ?
  • 修复了错误!但是现在当我运行该项目时,它只是说构建成功而没有在 main 中打印数组的平均和最低等级

标签: java class methods compiler-errors


【解决方案1】:

您共享的构造函数采用double[]。您似乎忘记传递您创建的 grades 数组:

double[] grades = {98.7, 77.9, 90, 83, 67, 33, 81, 90 };
HomeworkGrades cls = new HomeworkGrades(grades);

【讨论】:

  • Uf...我猜你的速度稍微快了一点^^
【解决方案2】:

您忘记为new HomeworkGrades()-instance 设置参数。

因此

double[] grades = {98.7, 77.9, 90, 83, 67, 33, 81, 90 };
HomeworkGrades cls = new HomeworkGrades();

应该是

double[] grades = {98.7, 77.9, 90, 83, 67, 33, 81, 90 };
HomeworkGrades cls = new HomeworkGrades(grades);

此外...您在初始化 HomeworkGrades 时正在做一些疯狂的事情...

这会很好用:

    double[] HWgrades;

    public HomeworkGrades(double [] gradesEarned) {
        HWgrades =gradesEarned;
    }

您甚至没有使用private double[] grades;,并且您不必设置数组array.length 次以在最后获得数组。只做一次。

编辑 为了从实例中打印您的平​​均值或您想要的任何内容,只需获取双精度并在 System.out.println() 中打印它

    public static void main(String[] args) {
        double[] grades = {98.7, 77.9, 90, 83, 67, 33, 81, 90};
        HomeworkGrades cls = new HomeworkGrades(grades);
        System.out.println("Average: " + cls.calcAverage());
    }

EDIT2 您获得最低成绩的功能很奇怪...只需使用它即可:

    public double calcLowestGrade() {
        double lowest = Double.MAX_VALUE;
        for (double d : HWgrades) {
            if (d < lowest) {
                lowest = d;
            }
        }
        return lowest;
    }

一个错误是您将函数设为静态,因此它无法获取 HWgrades 数组。此外,您不必创建新数组,因为您已经在开始时为对象提供了数组。

【讨论】:

  • 好的,现在主要我如何让它打印我的方法的实际结果?我试过 system.out.println();在 () 中带有 cls 和等级
  • 我将此添加到我的答案中。但基本上只是System.out.println("Average: " + cls.calcAverage());
  • 哦,好吧,这应该很明显,大声笑,一个有效,但是当我尝试调用我的 calclowestgrade 方法时,我收到一个错误“类中的方法不能应用于给定的数据类型。必需double[], double. 我试着去掉这一行中的 [] { public double calcLowestGrade(double[] a, double total)}
  • 再编辑一次...如果对您有帮助,请点赞我的评论并将其标记为已接受的答案。
  • 是的,我在使用这种方法时遇到了问题,不过你的方法有效,非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-21
  • 1970-01-01
  • 2015-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多