计数器循环和平均值

时间:2019-04-10 15:20:15

标签: java arrays

我想在array中输入5个主题的分数,并计算它们的平均值,并进行 5 次计数器循环,然后显示name和{{1} }。

average

我希望package enstudentrunner; import java.util.Scanner; public class EnStudent { private String Name; public int[] Result_array=new int[5]; public EnStudent(String Name,int Result_array[]) { this.Name=Name; for(int count=0;count<Result_array.length;count++) { Scanner input = new Scanner (System.in); System.out.println("Enter marks"); Result_array[count]=input.nextInt(); } } public int Average() { int total=0; for(int counter=0;counter<Result_array.length;counter++) { total+=Result_array[counter]; } return total/5; } public void display() { System.out.println("your name is"+this.Name+"average is"+Average()); } } package enstudentrunner; public class EnStudentRunner { public static void main(String[] args) { // TODO code application logic here int[] Result_array=new int[5]; EnStudent Std = new EnStudent("Usama",Result_array); Std.Average(); Std.display(); } } 的输出为{50,60,70,80,90},但实际输出为70

2 个答案:

答案 0 :(得分:0)

您是从主设备传递Result_array并更新该数组,而不是使用this.Result_array。通过Result_array毫无意义。

答案 1 :(得分:0)

因此,首先介绍一些有关编码约定的技巧。在Java和大多数语言中,请以小写字母开头的变量。它增加了可读性。

因此,您遇到的问题是变量范围界定。 在您的构造函数中

    public EnStudent(String Name,int Result_array[])

您引用了Result_array。 Java作用域的工作方式是始终引用范围最小的变量。因此,在这种情况下,将使用局部变量(参数)Result_array。这样,这些值就存储在您传入的数组中。当计算平均值时,您将引用在EnStudent类内部创建的数组。 (成员变量)从未分配的变量,都为空。

有两种方法可以解决此问题:

1)您可以在构造中删除参数Result_array。似乎多余。

2)您可以将此参数分配给成员变量Result_array。 (并且,如果这样做,则不需要初始化成员变量。)

希望这对您有所帮助。