Java程序计算变量数组的平均值,从命令行输入,显示结果 - java

以下是我到目前为止的内容。指令是创建一个简单的Java程序来计算可变数量的int的平均值。主要的Args数组,无Scanner对象,查找并显示最高和最低值。将用户输入作为参数并返回值的静态方法。启动时应显示欢迎消息。

因此,我认为代码的开头是正确的!它为我编译。但是我不确定如何通过扫描仪获得用户输入。我假设我需要在静态方法中使用数组将输入转换为参数。执行时哪个是Java CalculateAverage 1、2、5、9、20?
然后我会打电话给数学吗?这样我就可以显示min max和avg的所有值?我在正确的轨道上吗?这些问题在代码中是特定的。抱歉,第一次在这里发布!

public class CalculateAverage {

public static void main(String[] args) {

    System.out.print("Hello welcome to the Average Calculator");

    int[] array = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int a = Integer.parseInt(args[0]);
    int b = Integer.parseInt(args[1]);
    //do i just keep going and adding letters til j? 
    //or is there an easier way to do this..?
    minArray(array);
    maxArray(array);
    sumArray(array);
    avgArray(array);
}

public static double maxArray(double[] array){

    double max = Double.NEGATIVE_INFINITY;
       //tbh i saw this on a tutorial, idk if NEGATIVE_INFINITY would 
       //work for me? 
        for (int i = 0; i < n; i++)
            if (array[i] > max) max = array[i];

    System.out.println("The maximum of your array is:" + max);
}

public static double avgArray(double[] array){

    double sum = 0.0;

    for(int i = 0; i < n; i++)
        sum += array[i];
    double avg = sum / n;

    System.out.println("The average value of your array is: " + avg);
} //then i would make another static for the min but probably before max

}

参考方案

要从命令行执行

javac CalculateAverage.java

让Java编译该类并准备运行它。然后您可以使用

java CalculateAverage arg0 arg1 arg2 ...

现在,在您的main( string[] args )方法中,我看到您正在创建一个包含11个元素的数组。这不是必须的,也不是理想的-如果用户在运行程序时给出的参数超过11个,该怎么办?更好的方法是:

int[] array = new int[ args.length ]()

这将创建一个新的int数组,该数组的长度与args数组的长度相同-每个数组都具有该length属性,该属性指示该数组具有多少个元素。现在,我们实际上还没有在array中放入任何内容,但是我们知道它可以容纳与程序给出的相同数量的参数。现在,初始化每个元素:

for(int i = 0; i < args.length; i++) {
    array[i] = Integer.parseInt(args[i])
}

for循环创建一个变量i(这是int i = 0的一部分),初始化为0,然后在大括号内执行该代码。完成后,它将i的值增加一(这是i++的一部分),并再次在花括号内连续运行代码,直到条件i < args.length为false为止。总而言之,这会遍历args的每个元素,并初始化array的相应元素。

现在,您可以使用Math模块为您进行计算,但是您几乎可以自己进行计算了。例如,这是对maxArray的一些轻微修饰:

public static int maxarray(int[] array) {
    int max = array[0]
        for (int i = 1; i < array.length; i++) {
            if (array[i] > max) max = array[i];
        }
    }
    System.out.println("The maximum of your array is:" + max);
}

我在这里使用int,因为输入是int。通常,您可能应该确保所有内容都是同一类型的变量。将所有数字设为int或将它们全部设为double,但不要尝试在它们之间来回移动。

实际上,您不需要任何东西都具有负无穷大。您可以从数组中的第一个数字开始,调用最大值,然后对每个数字,如果最大值较大则替换它。我们在这里以相同的方式使用for循环来遍历整个数组。

同样,您已经正确地执行了avgArray(double[] array),除了我不知道从何处获得了n变量(您应该再次使用array.length)。

总体而言,我建议您回顾一下到目前为止有关该课程的笔记,并仔细确保您了解所有含义以及如何将其应用于此示例。复习有关数组工作原理的知识;以及intdouble之间的区别。

图像作为Int Array Java - java

我在用Java编写的网络摄像头应用程序中使用JMyron,该程序返回了网络摄像头视为int []的内容。由于每个int一个像素,它如何将像素的rgb值表示为一个int? 参考方案 一个int是32位。所以int的前8位是红色0-255,后8位是绿色0-255,后8位是蓝色0-255,后8位是alpha值0-255。这就是为什么它称为32位颜色。当我第一次连接…

Java-将int更改为ascii - java

java有没有办法将int转换为ascii符号? 参考方案 您是否要将int转换为char?:int yourInt = 33; char ch = (char) yourInt; System.out.println(yourInt); System.out.println(ch); // Output: // 33 // ! 还是要将int转换为Stri…

Java-搜索字符串数组中的字符串 - java

在Java中,我们是否有任何方法可以发现特定字符串是字符串数组的一部分。我可以避免出现一个循环。例如String [] array = {"AA","BB","CC" }; string x = "BB" 我想要一个if (some condition to tell wheth…

Java:正则表达式模式匹配器是否有大小限制? - java

我的模式类似于OR:“word1 | word2 | word3”我大约有800个字。可能有问题吗? 参考方案 您仅受记忆和理智的限制。 :)

Java:线程池如何将线程映射到可运行对象 - java

试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …