以下是我目前所拥有的。指令是创建一个简单的 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/