【问题标题】:Determining Maximum and Mean of an User-Provided Array in Java在 Java 中确定用户提供的数组的最大值和平均值
【发布时间】:2016-01-16 03:50:46
【问题描述】:

我是编码新手,所以请放轻松。我正在尝试使用两个单独的类(即 xyz 和一个单独的 xyztester 类)来确定用户提供的数组的最大值和平均值。我有我的编码,但最大输出是 0.0,平均输出比数组的长度小一。这是我的编码 -

“xyz”类

public static double maximum(double[] array){
    double max = array[0];
    for (int j = 1; j < array.length; j++){
        if(array[j] > max){
            max = array[j];
        }
    }
    return max;
}

public static double mean(double[] array){
    double sum = 0;
    for (double k = 0; k < array.length; k++)
        sum = sum + array.length;

    double avg = sum / array.length;

    return avg;
}

“xyzTester”类

    double [] b;
    b = new double [quantArray];

    int j;
    for (j = 0; j > quantArray; j++){
        b[j] = in.nextDouble();
    }
    double n = xyz.maximum(b);

    double [] c;
    c = new double [quantArray];

    int k;
    for (k = 0; k > quantArray; k++){
        c[k] = in.nextDouble();
    }
    double o = xyz.mean(c);

谁能详细说明我做错了什么?

【问题讨论】:

  • 我建议你添加一个标签来指定使用的语言。
  • stackoverflow.com/questions/33187119/… - 似乎正在解决类似的问题
  • 谢谢你们。我忘了添加语言。我已经更新了标题和标签。
  • 你试过调试器了吗?
  • 对不起。我从来没有调试过任何程序。我不知道怎么。我正在使用 NetBeans 8.0。我应该关注这个链接还是有更好的方法? netbeans.org/kb/docs/java/debug-visual.html

标签: java arrays max mean


【解决方案1】:

我看到两个问题:在mean方法中

sum = sum + array.length;

应该是

sum = sum + array[k];

其次,所有浮点计算都应该在浮点操作符之间进行。所以最好在除法之前将数组长度之类的东西加倍:

double avg = sum / (double)array.length;

【讨论】:

  • 谢谢。当我做出您建议的更改时,我得到“不兼容的类型:从 double 到 int 的可能有损转换”。另外,我使用的是双精度而不是浮点数。我应该改为浮动还是会有所不同?
  • double 和 float 都是精度不同的浮点数。请参阅编辑后的答案。
  • 再次感谢。我进行了更改,现在平均输出与数组长度相同......“运行:您要输入多少个数字?5 请输入 5 个数字:1 2 3 4 5 最大数字是 0.0 平均值这 5 个数字中有 5.0 BUILD SUCCESSFUL(总时间:4 秒)"
  • 这里实际上不需要强制转换为 double,因为编译器会自动执行此操作(sum 是 double 类型,如果一个操作数是 double 而另一个是 int,则 int 会自动提升为 double )。
猜你喜欢
  • 2020-06-17
  • 1970-01-01
  • 2013-12-23
  • 1970-01-01
  • 2012-04-13
  • 1970-01-01
  • 1970-01-01
  • 2014-06-11
  • 1970-01-01
相关资源
最近更新 更多