我想在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
答案 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
。 (并且,如果这样做,则不需要初始化成员变量。)
希望这对您有所帮助。