如何通过返回highValue消除错误?

时间:2012-07-14 21:59:32

标签: java arrays integer double max

基本上我正试图让双打与整数一起使用,也许我错过了一些明显的东西,但是,使用返回highValue 代码,我收到的错误是“可能丢失精度,必需:int,found:double“。就评论而言,这是我正在上课的。这是代码:

package pj701;

public class PJ70103 {

     public static void main(String[] args)
    {   //DO NOT CHANGE ANYTHING IN THE MAIN()
        double[] x = { 11.11, 66.66, 88.88, 33.33, 55.55 };
        double[] y = { 9, 6, 5, 8, 3, 4, 7, 4, 6, 3, 8, 5, 7, 2 };
        double[] z = { 123, 400, 765, 102, 345, 678, 234, 789 };

        int index = FindIndexHighest (x);

        System.out.printf( "%s%5d%s%8.2f\n", "Array x:  element index = " ,  index,
                "  element contents = ", x[index] );

        index = FindIndexHighest (y);
        System.out.printf( "%s%5d%s%8.2f\n", "Array y:  element index = " ,  index,
                "  element contents = ", y[index] );

        System.out.printf( "%s%5d%s%8.2f\n", "Array z:  element index = ",
                 FindIndexHighest (z),  "  element contents = ",
                 z[FindIndexHighest (z) ] );
}
 //======================================================
// put your method definition here - - ONE method
//======================================================

     public static int FindIndexHighest(double[] x)
     {
        double highValue = 0;
        for (int i = 1; i < x.length; i++)
        {
            if (x[i] > highValue)
                    {
                        highValue = x[i];
                    }
            else
            {
                highValue = highValue + 0;
            }

        }
        return highValue;
     }
}

2 个答案:

答案 0 :(得分:0)

您收到错误是因为您错误地实施了该方法。您将返回最高(一个double)而不是最高索引(一个int)。您需要返回具有最高值的元素的索引。

您还应该知道数组的第一个索引是索引0,而不是索引1。

答案 1 :(得分:0)

我认为您需要再次检查作业的要求。它不是要求的值,而是传递的数组中该值的索引。

对于编译器警告,这意味着当您尝试隐式地将double转换为int时,您可能会丢失一些您拥有的信息。例如。 double d = 3.5; int i = d;将导致i == 3,因此小数点后的信息将丢失。这是编译器警告你的内容。要摆脱警告,请发出明确的演员,例如:上例中的int i = (int)d;