2012-12-30 27 views
-2
发送值的另一种方法在另一类

对不起,我是新来的Java。我想通过mark1方法计算器的类考试,但我得到了一些错误,我该怎么做,程序说incompatibe类型。我能做什么?在JAVA

我想从这个方法发送MARK-1:

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(); 

    } 
} 
+1

请提供完整的代码。 mark1的类型是什么? – Swapnil

+1

您应该考虑检查[Sun的编码约定](http://www.oracle.com/technetwork/java/codeconv-138413.html)以改善您的代码清晰度。你真的需要它。 –

回答

1

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

public Calculator (float mark1) 

应该

public float Calculator (float mark1) 
+0

但我不想在方法计算器中返回...我想计算器方法获得mark1并计算出来,然后打印出来给我...这是正确的概念吗? – user1935321

0

Calculator方法没有return语句及其签名(方法头)不声明返回类型。 另外,我不能看到你宣布mark1,你只能在for环路初始化它。 同时,我也发现了一个逻辑错误,mark1总是会发送数组中的最后得分,因为它的价值将在循环中重复的覆盖;只有最后一个值才能存活。

+0

那么我能在这里做什么......?你可否告诉我,我应该怎么做才能将所有的数组值发送给方法计算器? – user1935321

+0

你能完全解释你想达到什么吗?从帖子中,我找不到为什么你需要_for_循环。当我确切地知道你想达到什么时,我只能告诉你该怎么做。 –

+0

以及我想发送mark1,我宣布它在类AddList完全我想发送getmark方法,即学生的成绩级别考试在方法计算器和这种方法中,我想总结所有的数组值和鸿沟它的数组值的数量但我的问题是如何发送所有数组valucuse的方法计算器的值是学生的标志和类型浮法...对不起我的英语不好...... – user1935321

0

当你不需要返回类型,你键入void method_name(args),像C. Void没有返回类型的占位符。其次,你的代码比其他新手更好,但你仍然有很多不必要的细节,这意味着你没有调试自己。更好地本地化问题(删除不需要重现的所有内容)。那么专家立即看到你的问题会更简单。你甚至可以自己看到或猜测它。否则,如果没有学习本地化的错误,你永远不会成为程序员。不必要的垃圾SO。

0

有你的代码的几个小问题:

  • 通常方法名称应与在Java代码中约定

  • 什么是for回路SendMark方法做下字母开头?只是多次覆盖浮动变量?

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

  • ,如果你不从Calculator()方法,你为什么在你SendMark()方法return ex.Calculator(mark1),并且类型为浮动期待任何返回值?

+0

我想发送数组值,这里是getmark计算器的方法来平均他们..我怎么能这样做? – user1935321

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的编码约定。

+0

在(MARK1 =学生[I] .getmark)我要收集所有的数组值到MARK1可变...与此代码(返程ex.calculator(MARK1))我想发送的MARK1到计算器的方法,是这是正确的? – user1935321

+0

我应该在sendmail类中返回什么?我应该将mark1返回到计算器方法吗?我怎样才能做到这一点 ? – user1935321

+0

对于你的第一个评论,如果你想收集所有的值,那么,你应该初始化MARK-1到你的循环之外的合适的值,然后你的循环里面,你应该有下面的一段代码MARK-1 = MARK-1 +的学生[I] .getmark的();以便您可以将mark1中数组的所有值变量。如果你只是做mark1 = students [i] .getmark(),每次存储新值,最后只存储最后一个值。 –

0

的方法的一个是通过学生阵列计算器和在学生calclator方法迭代内部综上所述马克等 马克=马克+学生[I] .getMark()和平均=马克/ students.length

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

还请到通过Java编码规范以及如何选择返回类型。

希望这会有所帮助。