输入数字列表和 'void' 此处不允许输入

input a list of numbers and 'void' type not allowed here

下面是我的初步脚本。

public class Insertion
{
    public static void sort(double[] a)
    {
        int N = a.length;
        for (int i=1; i<N; i++)
        {
            for (int j = i; j>0; j--)
            {
                if (a[j-1] > a[j])
                    exch(a, j-1, j);
                else break;         
            }
        }
    } 

    public static void exch(double[] a, int i, int j)
    {
        double swap = a[i];
        a[i] = a[j];
        a[j] = swap;     
    }   
    
    public static void main(String[] args)    
    {            
        double[] a = {5, 2, 4, 1};  //eventually wanna be able to input this in interactions
        System.out.println(a[1]);      //just trying to figure out what's going on here
        System.out.println(a.length); 
        System.out.println(sort(a));   
    }
}

如果我 运行 它,我会收到 System.out.println(sort(a));

的以下错误消息

Error: 'void' type not allowed here

所以我有两个问题:

  1. 不允许无效是什么意思,您如何解决这个问题?

  2. 你可能已经注意到了,我手打的是 double []a,因为我仍然无法弄清楚在执行 [=42= 时如何输入数字列表] 脚本。


编辑:

这是在我进行了推荐给我的更改之后

public class Insertion
{
 public static double[] sort(double[] a)
  {
     int N = a.length;
     for (int i=1; i<N; i++)
     {
         for (int j = i; j>0; j--)
         {
           if (a[j-1] > a[j])
               exch(a, j-1, j);
           else break;         
         }
     }
     return a;
   } 
    public static void exch(double[] a, int i, int j)
    {
     double swap = a[i];
     a[i] = a[j];
     a[j] = swap;     
     }   
        public static void main(String[] args)    
    {            
         double[] a = {5, 2, 4, 1};
           System.out.println(a);
         //System.out.println(sort(a));   
          // sort(a);
           System.out.println(sort(a));
    }
}

作为上面编写的脚本的输出,我得到以下内容 [D@3e9af3ee

因为方法 sort(a) 没有 return 任何东西 你不能做 System.out.println(sort(a));

println 函数获取的参数是什么?

您的方法没有 return 状态 public static void sort(double[] a),因此您无法打印 System.out.println(sort(a));

试着改成这样:

   public static double[] sort(double[] a){
   ...
   return a;
   }

在 main 方法中执行此操作以迭代数组:

  for(double db: sort(a)){
   System.out.println(db);
  }

sort方法的return类型是void,也就是说"nothing".

System.out.println(sort(a)); - 在这里您要求打印一个值 return 通过调用 sort(a) 编辑,这是 void 并且不允许。那是错误 - 你无法打印出 "nothing".

sort 方法的 return 类型更改为 double[] 和 return asort 方法或将调用拆分为sort 如下 -

   sort(a);
   System.out.println(a);