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

标签 java arrays parsing terminal compiler-errors

以下是我目前所拥有的。指令是创建一个简单的 java 程序来计算可变数量的整数的平均值。 main 的 Args 数组,没有 Scanner 对象,查找并显示最高值和最低值。将用户输入作为参数并返回值的静态方法。应在启动时显示欢迎消息。

所以我认为我的代码开头是正确的!它为我编译。但我不确定如何在没有扫描仪的情况下获取用户输入。我假设我需要在静态方法中使用数组来将输入转换为参数。执行时哪个是 java CalculateAverage 1、2、5、9、20? 然后我会调用MATH吗?所以我可以显示 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 s,与数组长度相同args - 每个数组都有该属性 length说明数组有多少个元素。现在,我们实际上没有在 array 中放入任何东西。 yet,但我们知道它有空间容纳与程序提供的相同数量的参数。现在,初始化每个元素:

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

A for循环创建一个变量 i (这是int i = 0部分),初始化为0 , 然后执行大括号内的代码。完成后,它会增加 i 的值一个(这是 i++ 部分),然后再次连续运行大括号内的代码,直到条件 i < args.length是假的。总之,这遍历了 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 s 或全部制作 double s,但不要试图在它们之间来回切换。

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

同样,你在做 avgArray(double[] array)已经正确 - 除了我不知道你从哪里得到变量 n来自(您应该再次使用 array.length)。

总的来说,我建议您回顾一下到目前为止您对这门课的笔记,并仔细确保您了解所有内容的含义以及它如何应用于此示例。回顾你所学的关于数组如何工作的内容;以及 int 之间的区别s 和 double

关于Java程序计算变量数组的平均值,从命令行输入,显示结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50995189/

相关文章:

c - 在 C 中标记 URL

java - 等待进程完成后再执行一行代码

java - 执行条件等待时出现异常?

java - 控制 Hibernate EnumType.STRING 属性的排序顺序

php - 使用键名但空值初始化关联数组

JavaScript 正则表达式语法

python - 解析Python文件以检查它是否符合某些规则

java - 设置有向无环图中节点的最晚开始时间

ruby-on-rails - 如何使用 Controller 保存数组参数?

arrays - 在 Matlab 中向量化和分离查找操作