繁体   English   中英

如何从void方法打印结果

[英]How can I print a result from a void method

我正在为我的编程课入门做作业,这是一种冒泡的选择。 代码可能有缺陷,但是我不是在寻找解决这个问题的人。 我的问题是,我正在尝试打印它。 我得到的条件是该方法必须由void方法在“公共静态void sort(int []数组)”行中定义。 因此,如果我尝试导入Arrays,并使用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方法内创建了一个新的本地数组,由于分配的限制,您显然无法返回该数组。

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

您的方法将无效,因为传递的数组将保持不变。 您需要进行适当的排序,即无需创建新数组。 这样,如果您从主方法传递它,它将被排序并可以在此处打印。

冒泡排序应使用交换方法,因此您只需要一个临时变量。

为了打印数组,您需要在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关于本地数组的内容。 使用作为参数传递给方法的数组,不要创建新数组。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM