Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 打印数组平均值和最高值_Java_Arrays - Fatal编程技术网

Java 打印数组平均值和最高值

Java 打印数组平均值和最高值,java,arrays,Java,Arrays,我正在尝试调用getAverage和getHighest到我的驱动程序类,并将它们打印在屏幕上。然而,我不断得到垃圾值。你知道这个程序有什么问题吗?多谢各位 public class ArrayOperations { public double getAverage(int[] array) { double total = 0; double average; for (int index = 0; index < ar

我正在尝试调用getAverage和getHighest到我的驱动程序类,并将它们打印在屏幕上。然而,我不断得到垃圾值。你知道这个程序有什么问题吗?多谢各位

public class ArrayOperations
{
    public double getAverage(int[] array)
    {
        double total = 0;
        double average;

        for (int index = 0; index < array.length; index++)
            total += array[index];

        average = total / array.length;
        System.out.println("The average is: " + average);
        return average;
    }

    public int getHighest(int[] array)
    {
        String output = new String("");
        int highest = array[0];
        for(int i = 1; i < array.length; i++)
        {
            if (array[i] > highest)
                highest = array[i];
            System.out.println("The highest score=" + highest);
        }
        return highest;
    }
}

你不能在任何地方调用这些方法,只要这样做就行了

System.out.println(object.getAverage(testScore));
System.out.println(object.getHighest(testScore));

使用代码,您只需打印对象,该对象将为您提供该对象的字符串表示形式。

选项1:

您得到的“垃圾”值是
object
所在的内存位置。而是调用以下方法:

System.out.println(object.getAverage(testScores));
System.out.println(object.getHighest(testScores));
我会给你的代码添加一个修改,这样它就不会打印很多“最高值是:”

并以这种方式调用方法:

public class ArrayOperationDriver {
    public static void main(String[] args) {
        int [] testScores = {80, 90, 58, 75, 85, 45, 68, 72, 95};
        ArrayOperations object = new ArrayOperations();
        object.getAverage(testScores);
        object.getHighest(testScores);
    }
}
我想这是一种更干净的方法

选项3:

还有一个选择是,从方法中返回数字,但从方法中删除S.o.p调用

public class ArrayOperations {
    public double getAverage(int[] array) {
        double total = 0; 
        double average; 
        for (int index = 0; index < array.length; index++)
            total += array[index];

        average = total / array.length;
        return average;
    }

    public int getHighest(int[] array) {
        String output = new String("");
        int highest = array[0];
        for(int i = 1; i < array.length; i++) {
            if (array[i] > highest)
                highest = array[i];
        }
        return highest; 
    }
}
编辑

要打印数组
testScores
中的所有数字,您可以在简单的for循环或
for each
循环中进行,我使用for each,但如果您想知道如何使用,可以使用for进行尝试

public class ArrayOperationDriver {
    public static void main(String[] args) {
        int [] testScores = {80, 90, 58, 75, 85, 45, 68, 72, 95};
        ArrayOperations object = new ArrayOperations();
        System.out.println("Average number is: " + object.getAverage(testScores));
        System.out.println("Highest number is: " + object.getHighest(testScores));

        System.out.print("The test scores are: ");
        for (int score : testScores) 
            System.out.print(score + " ");
        System.out.println("");
    }
}

您没有调用
getAverage
getHighest
。您只是在打印
ArrayOperations
,它实际上调用了
ArrayOperations.toString()
。由于您没有覆盖它,因此得到了默认实现,它将打印类名及其默认的
hashCode()
实现

最好的做法是从
arrayooperations
”方法中删除打印,只返回结果。打印应由调用方(驱动程序)类处理。通过这种方式,如果调用方希望对结果执行其他操作(例如,在网页中显示结果、将其保存到数据库、执行另一个计算),它可以

public class ArrayOperationDriver
{
    public static void main(String[] args)
    {
        int [] testScores = {80, 90, 58, 75, 85, 45, 68, 72, 95};
        ArrayOperations object = new ArrayOperations();
        System.out.println
            ("The average score is: " + object.getAverage(testScores));
        System.out.println
            ("The highest score is: " + object.getHighest(testScores));
    }
}

您正在获取“垃圾”值,因为您正在使用尚未覆盖其的输入对象调用
System.out.println
。您也没有调用您在
arrayooperations
@tommy上定义的方法。您可以检查对象的
toString()
方法的Javadoc(基本上是
toString()
对象的
方法),看看原因。这些答案都是正确的;但是,我可能会使这些方法成为静态的,因为它们只依赖于输入参数,不修改任何类型的状态(这些将被称为“纯函数”)。好的,谢谢。我现在能够打印出平均值和最高值,就像我试图打印的那样。你知道我将如何在驱动程序类中打印测试分数吗?我正在尝试使用System.out.println打印它(测试分数为:“+testScores”);但这对我来说不起作用,你帮了我很大的忙。我希望在我的java技能提高时能报答我。如果你尝试将它们打印为
System.out.println(“测试分数为:“+testScores);
,同样,您将获得阵列所在的方向,因此,这就是为什么您需要在它们之间循环。别担心,我很乐意提供帮助。祝您好运,继续学习!C:
public class ArrayOperations {
    public double getAverage(int[] array) {
        double total = 0; 
        double average; 
        for (int index = 0; index < array.length; index++)
            total += array[index];

        average = total / array.length;
        return average;
    }

    public int getHighest(int[] array) {
        String output = new String("");
        int highest = array[0];
        for(int i = 1; i < array.length; i++) {
            if (array[i] > highest)
                highest = array[i];
        }
        return highest; 
    }
}
public class ArrayOperationDriver {
    public static void main(String[] args) {
        int [] testScores = {80, 90, 58, 75, 85, 45, 68, 72, 95};
        ArrayOperations object = new ArrayOperations();
        System.out.println("Average number is: " + object.getAverage(testScores));
        System.out.println("Highest number is: " + object.getHighest(testScores));
    }
}
public class ArrayOperationDriver {
    public static void main(String[] args) {
        int [] testScores = {80, 90, 58, 75, 85, 45, 68, 72, 95};
        ArrayOperations object = new ArrayOperations();
        System.out.println("Average number is: " + object.getAverage(testScores));
        System.out.println("Highest number is: " + object.getHighest(testScores));

        System.out.print("The test scores are: ");
        for (int score : testScores) 
            System.out.print(score + " ");
        System.out.println("");
    }
}
public class ArrayOperationDriver
{
    public static void main(String[] args)
    {
        int [] testScores = {80, 90, 58, 75, 85, 45, 68, 72, 95};
        ArrayOperations object = new ArrayOperations();
        System.out.println
            ("The average score is: " + object.getAverage(testScores));
        System.out.println
            ("The highest score is: " + object.getHighest(testScores));
    }
}