我在这里感到困惑。我的目标是制作一个简单的程序,获取用户想要平均的值的数量,将它们存储在一个数组中(同时将它们加在一起),最后给出这些数字的平均值。
我的事情是,我试图理解多个类和方法的概念,因为我是新来的,所以我尝试使用另一个类来完成所有工作,而主类只会从另一个类创建对象,然后运行他们的方法。也许我在问一些不可能的事情。看看我的代码。
这是我的主类(class):
public class Main
{
public static void main(String[] args)
{
System.out.println("Please enter numbers to average together");
OtherClass averages = new OtherClass();
averages.collectNumbers();
averages.AverageNumbers();
}
}
现在我不确定这些参数中是否有任何内容,或者我是否可以使用“averages.AverageNumbers();”而不用“OtherClass”创建另一个对象,称为其他对象?我很确定这是合法的。
这是我在这个项目中的另一个类,名为“OtherClass”
import java.util.Scanner;
public class OtherClass // using this to name obj
{
public void collectNumbers() //name of our method that does things
{
Scanner sc = new Scanner(System.in);
System.out.println("how many integers would you like to average? ");
int givenNum = sc.nextInt();
System.out.println("Alright, I will average " + givenNum + " values. \nPress enter after each:");
int[] numCollect = new int[givenNum];
int sum = 0;
for (int i = 0; i < numCollect.length; i++)
{
numCollect[i] = sc.nextInt();
sum = sum + numCollect[i];
}
System.out.println(sum);
}
public int AverageNumbers(int givenNum, int sum)
{
int average = sum / givenNum;
System.out.println(average);
return average;
}
}
所以当我现在使用 AverageNumbers 方法运行它时,它不起作用。我怀疑我可能传递的整数错误?我已经玩了大约一个小时了,所以我正在寻求帮助。我怎样才能做到这一点?
最佳答案
如果您将 sum
和 givenNum
声明为 OtherClass
的字段,而不是局部变量,则此方法将起作用。因此,在 collectNumbers
方法之前,写入
private int sum;
private int givenNum;
并删除collectNumbers
中这两个变量的声明。因此,例如,而不是
int givenNum = sc.getInt();
你将拥有
givenNum = sc.getInt();
因为变量已经存在。还将 averageNumbers
方法的声明更改为
public int averageNumbers()
因为您不再需要将这两个值传递给此方法。
这是使用类的对象来携带少量数据的典型示例,而不是仅仅使用类作为将方法分组在一起的方式。此类的两个方法与 sum
和 givenNum
一起使用,因此将它们存储在此类的每个对象中是有意义的。
最后,在您的 averageNumbers
方法中,您有一个整数除法,它会自动向下舍入。你可能想要一个浮点除法,所以你可以写
double average = (double) sum / givenNum;
在除法之前将 sum
转换为 double float ,因此以 float 进行除法,而不是仅使用整数。当然,如果进行此更改,您还需要将此方法的返回类型更改为 double
。
关于java - 如何将这些整数传递给下面的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27453981/