【问题标题】:How can I print a result from a void method如何从 void 方法打印结果
【发布时间】:2013-11-09 21:25:31
【问题描述】:

我正在为我的编程课介绍做作业,这是一个冒泡排序。代码可能有缺陷,但我不是在找人来解决这个问题。我的问题是,我正在尝试打印它。我得到的条件是,该方法必须由“public static void sort(int[] array)”行中的 void 方法定义。因此,如果我尝试导入数组,并在我的 main 方法中使用 System.out.println(Arrays.toString(sort(array)));,它将无法正常工作,因为我收到一个编译器错误,提示 void 不适用。如果我试图将它放入 main 方法的循环中,它会告诉我存在不兼容的类型。找到的是void,需要的是int[],但赋值的原始条件是使用void方法。因此,话虽如此,我应该将方法从 void 更改为 int[] 以进行测试并将分配作为 void 提交,还是有办法用 void 打印此代码的输出而我只是想念是吗?

public static void sort(int[] array)
      { 
        int[] y = new int[array.length];
        for(int i = 0; i<=array.length-1; i++)
        {
          for(int j = i+1; i<=array.length-1; j++)
          {
            if(array[i] < array[j]){
              y[i] = array[j];
            }
            if(array[i] >= array[j]){
              y[i] = array[i]; 
          }  
        }
          for(int k = 0; k<y.length; k++){
          System.out.println(y[k]);
          }
      } 
    } //end of sort method

【问题讨论】:

  • 调用 sort 方法后,您应该能够简单地打印您发送到该方法的数组
  • 纠正你的缩进会很好。看看多乱 - 你甚至必须注释右括号才能找到它!

标签: java


【解决方案1】:

问题是您在排序方法中创建了一个新的本地数组,由于分配的限制,您显然无法返回。

int[] y = new int[array.length];

您的方法将无效,因为传递的数组将保持不变。您需要就地进行排序,即不创建新数组。这样如果你从你的 main 方法中传递它,它就会被排序并且你可以在那里打印它。

Bubble sort 应该使用swap 方法,所以你只需要一个临时变量。

【讨论】:

    【解决方案2】:

    为了打印数组,您需要在 main 方法中

    //code that initializes the array or whatever
    sort(myArray);
    System.out.println(Arrays.toString(myArray)); //print the array modified by the previous method call
    

    还要注意@A4L 对您的本地阵列的评价。使用作为参数传递给方法的数组,不要创建新数组。

    【讨论】:

    • ...方便打印,无需循环
    【解决方案3】:

    Arrays.sort() 修改您传入的数组。因此,如果您遍历array 对象并在调用Arrays.sort() 之后打印元素,它将为您打印。

    【讨论】:

    • 在编程课的介绍中调用 Arrays.sort 可能不是,这节课是关于什么的。
    【解决方案4】:

    由于您有一个 void sort 方法,因此您希望它对数组进行排序作为副作用。也就是说,修改您作为方法参数传递的int[] array 引用中的值。然后你可以从主打印它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-18
      相关资源
      最近更新 更多