-2

抱歉,我是 Java 新手。我想在方法 Calculator 中将 mark1 传递给类 Exam,但是我遇到了一些错误,我该怎么做才能让程序说不兼容类型。我能做些什么?

我想通过这个方法发送 mark1:

public float SendMark(){
    Exam ex = new Exam();
    for (int i=0; i<students.length; i++) {
        mark1 = students[i].getMark();
    }
    return ex.Calculator(mark1);
}

到这个类和方法计算器......但它说不兼容的类型......这个方法我想对数组值求和并得到数组值的平均值......它是正确的方法吗?我应该在这里写什么...?请帮我详细说明谢谢...

public class Exam {
    public Calculator (float mark1) {
        AddList ad = new AddList();

    }
}
4

6 回答 6

1

您缺少方法计算器的返回类型。

public Calculator (float mark1)

应该

public float Calculator (float mark1)
于 2012-12-30T10:57:34.957 回答
0

根据我从您的问题中了解到的情况,这是我的答案。

   public float **s**endMark(){
        Exam ex = new Exam();
        for (int i=0; i<students.length; i++) {
            mark1 = students[i].getMark(); //this does not make any sense.
        }
        //Since you insisted that you wanted to only print, just call the calculator method and do not return anything. change the return type of calculator method to void.
        ex.Calculator(mark1);
        return "something";//since your method's definition says so
   }

public class Exam {
    public void **c**alculator (float mark1) {
        //Do your stuff

    }
}

您可能还想查看 sun java 的编码约定。

于 2012-12-30T11:42:22.137 回答
0

您的Calculator方法没有返回语句,并且它的签名(方法头)没有声明返回类型。另外,我看不到您声明的位置mark1,您只在for循环中对其进行了初始化。同时,我还发现了一个逻辑错误,mark1总是会发送数组中的最后一个分数,因为它的值会在循环中被重复覆盖;只有最后一个值存在。

于 2012-12-30T11:07:45.650 回答
0

当您不需要返回类型时,您键入void method_name(args),就像在 C中一样。是无返回类型Void的占位符。其次,你的代码比其他菜鸟好,但你仍然有很多不必要的细节,这意味着你没有自己调试。更好地定位问题(删除所有不必要的重现)。让专家立即看到您的问题会更简单。你甚至会自己看到或猜到。否则,如果不学习本地化错误,您将永远不会成为程序员。并不必要地浪费SO。

于 2012-12-30T11:11:55.257 回答
0

您的代码中有几个小问题:

  • 通常方法名称应以 Java 代码约定中的小写字母开头

  • 方法中的for循环有什么作用SendMark?只是多次覆盖浮点变量?

  • 在您的评论中,您提到您想要Exam.Calculator方法打印结果,但没有返回值。然后你应该将void返回类型添加到 method Calculator()

  • 如果您不期望方法有任何返回值Calculator(),为什么要return ex.Calculator(mark1)在您的SendMark()方法中,并且类型是浮点数?

于 2012-12-30T11:12:44.720 回答
0

一种方法是将您的学生数组传递给计算器,然后在计算器方法内部迭代学生总结标记,如标记 = 标记 + 学生 [i].getMark() 和 avg = 标记/学生.长度

其他可能是,通过标记 = 标记 + 学生 [i].getMark() 在您的主要方法中形成标记,然后将标记和长度传递给计算器方法以计算平均值。

还请仔细阅读 java 编码约定以及如何选择返回类型。

希望这可以帮助。

于 2012-12-30T13:42:25.413 回答