有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java简化了一些消息;使用Xdiags:verbose重新编译以获得完整输出?

因此,我正在编写一个选择排序算法,将排序的所有部分转换为方法。但是,当我编译它时,它返回错误:

注:部分信息已被简化;使用-Xdiags:verbose重新编译以获得完整输出

我做错了什么

import java.io.*;
    public class Driver01
   {
       public static void main(String[] args)
      {
        //input
         double[] myArray = {2.0, 3.7, 9.9, 8.1, 8.5, 7.4, 1.0, 6.2};

        //sort the array
         double[] sorted = process(myArray);

        //output
         System.out.print("" + sorted);



      }
      private static double findMax( int EndIndex, double[] enterArray) {
         double max = 0;
         int trueIndex = 0; 
         for( int x = 0; x < EndIndex; x++) {
               if(enterArray[x] > max) {
                  max = enterArray[x];
                  trueIndex = x;
               }
               }

      return trueIndex;
      }
      private static void swap(int swap1, int swap2, double[] enterArray) {
         double temp = 0;
         temp = enterArray[swap1];
         enterArray[swap1] = enterArray[swap2];
         enterArray[swap2] = enterArray[swap1];

      }
      private static double[] process(double[] enterArray) {
         int range = enterArray.length -1;
         for( int x = 0; x < enterArray.length-1; x++) {
            double j = findMax(range, enterArray);
            swap(j, range, enterArray);
            range = range -1;
         }
         return enterArray;
      }
      }

修订守则:

import java.io.*;
    public class Driver01
   {
       public static void main(String[] args)
      {
        //input
         double[] myArray = {2.0, 3.7, 9.9, 8.1, 8.5, 7.4, 1.0, 6.2};

        //sort the array
         double[] sorted = process(myArray);

        //output
         System.out.print("" + sorted);



      }
      private static int findMax( int EndIndex, double[] enterArray) {
         double max = 0;
         int trueIndex = 0; 
         for( int x = 0; x < EndIndex; x++) {
               if(enterArray[x] > max) {
                  max = enterArray[x];
                  trueIndex = x;
               }
               }

      return trueIndex;
      }
      private static void swap(int swap1, int swap2, double[] enterArray) {
         double temp = 0;
         temp = enterArray[swap1];
         enterArray[swap1] = enterArray[swap2];
         enterArray[swap2] = enterArray[swap1];

      }
      private static double[] process(double[] enterArray) {
         int range = enterArray.length -1;
         for( int x = 0; x < enterArray.length-1; x++) {
            int j = findMax(range, enterArray);
            swap(j, range, enterArray);
            range = range -1;
         }
         return enterArray;
      }
      }

现在,代码正在打印一个如下所示的数组:[D@15db9742 现在怎么了


共 (1) 个答案

  1. # 1 楼答案

    完整的错误消息是:

    Driver01.java:41: error: incompatible types: possible lossy conversion
                             from double to int
                swap(j, range, enterArray);
                     ^
    Note: Some messages have been simplified; recompile with -Xdiags:verbose
          to get full output
    1 error
    

    由此可以看出,当int参数需要时,您使用double参数调用swap

    现在我不打算提出一个解决方案,但我建议你们仔细看看findMax正在做什么,以及它正在返回什么。尤其是返回类型

    (这里的部分问题是findMax变量的名称有误导性。该方法不执行名称所暗示的操作。)