Possible lossy conversion from double to int

2019-01-28 09:08发布

问题:

Why am I getting the Possible lossy conversion from double to int error and how can I fix it?

public class BinSearch {
    public static void main(String [] args)
    {
        double set[] = {-3,10,5,24,45.3,10.5};
        double l = set.length;
        double i, j, first, temp;
        System.out.print("Before it can be searched, this set of numbers must be sorted: ");
        for (i = l-1; i>0; i--)
        {
            first=0;
            for(j=1; j<=i; j++)
            {
                if(set[j] < set[first]) // location of error according to compiler
                {
                    first = j;
                }
                temp = set[first];
                set[first] = set[i];
                set[i] = temp;
            }
        }
    } 
}

As you can see, I've already tried replacing int with double near the top when declaring variables but it doesn't seem to do the job.

回答1:

Change all your variables used as array indices from double to int (i.e. the variables j, first, i). Array indices are integer.



回答2:

The array / loop indexes should be ints, not doubles.

When attempting to access set[j] for example, it complains about treating j as an int.



回答3:

Change the variable types as below. Array indices must be of type int.

public class BinSearch {
      public static void main(String [] args)
      {
          double set[] = {-3,10,5,24,45.3,10.5};
          int l = set.length;
          double temp;
          int i, j, first;
          System.out.print("Before it can be searched, this set of numbers must be sorted: ");
          for ( i = l-1; i>0; i--)
          {
              first=0;
              for(j=1; j<=i; j++)
          {
              if(set[j] < set[first])//location of error according to compiler
              {
                  first = j;
              }
              temp = set[first];
              set[first] = set[i];
              set[i] = temp;
          }
      }
  } 
}