java - 如何将这些整数传递给下面的方法?

标签 java arrays class methods multiple-instances

我在这里感到困惑。我的目标是制作一个简单的程序,获取用户想要平均的值的数量,将它们存储在一个数组中(同时将它们加在一起),最后给出这些数字的平均值。

我的事情是,我试图理解多个类和方法的概念,因为我是新来的,所以我尝试使用另一个类来完成所有工作,而主类只会从另一个类创建对象,然后运行他们的方法。也许我在问一些不可能的事情。看看我的代码。

这是我的主类(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 方法运行它时,它不起作用。我怀疑我可能传递的整数错误?我已经玩了大约一个小时了,所以我正在寻求帮助。我怎样才能做到这一点?

最佳答案

如果您将 sumgivenNum 声明为 OtherClass 的字段,而不是局部变量,则此方法将起作用。因此,在 collectNumbers 方法之前,写入

private int sum;
private int givenNum;

并删除collectNumbers中这两个变量的声明。因此,例如,而不是

int givenNum = sc.getInt();

你将拥有

givenNum = sc.getInt();

因为变量已经存在。还将 averageNumbers 方法的声明更改为

public int averageNumbers()

因为您不再需要将这两个值传递给此方法。

这是使用类的对象来携带少量数据的典型示例,而不是仅仅使用类作为将方法分组在一起的方式。此类的两个方法与 sumgivenNum 一起使用,因此将它们存储在此类的每个对象中是有意义的。

最后,在您的 averageNumbers 方法中,您有一个整数除法,它会自动向下舍入。你可能想要一个浮点除法,所以你可以写

double average = (double) sum / givenNum;

在除法之前将 sum 转换为 double float ,因此以 float 进行除法,而不是仅使用整数。当然,如果进行此更改,您还需要将此方法的返回类型更改为 double

关于java - 如何将这些整数传递给下面的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27453981/

相关文章:

android - 如何更新 Firestore 中 map 数组中的元素?

c# - 类型转换类和设置通用值

类设计: file conversion logic and class design

node.js - Nodejs 扩展 Sequelize 模型

java - 为什么这会导致 ArrayIndexOutOfBoundsException?

javascript - 如何将数组的一项与数组的另一项连接

java - 使用 Apache POI 设置日期格式

java - 如何删除JSP JAVA数组中表中的重复元素

java - 将 Spring/Hibernate 应用程序连接到 Docker 中运行的 Mysql

java - 为什么ProGuard输出的JAR文件中没有class文件?