0

基本上我试图让双打与整数一起工作,也许我遗漏了一些明显的东西,但是,使用返回的 highValue代码,我收到一个错误,上面写着“可能丢失精度,需要:int,找到: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;
     }
}
4

2 回答 2

0

您收到错误是因为您错误地实现了该方法。您正在返回最高(双精度)而不是最高索引(整数)。您需要返回具有最高值的元素的索引。

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

于 2012-07-14T22:02:39.380 回答
0

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

至于编译器警告,这意味着当您尝试将 double 隐式转换为 int 时,您可能会丢失一些您拥有的信息。例如double d = 3.5; int i = d;将导致i == 3,因此小数点后的信息丢失。这就是编译器警告您的内容。要消除警告,请发出显式强制转换,例如int i = (int)d;在上面的示例中。

于 2012-07-14T22:06:40.680 回答