Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 方法中的方法(家庭作业)_Java - Fatal编程技术网

Java 方法中的方法(家庭作业)

Java 方法中的方法(家庭作业),java,Java,我有一个家庭作业,要求我: 编写一个方法sort(int[]arr),该方法接受整数数组并使用 方法来确定数组是否按顺序排序 是否增加顺序。如果已排序,则应返回 数组,如果不是,则该方法应在返回前对数组进行排序 它 我的问题是,我不知道该如何处理这项任务?我应该修改以前的方法,在新方法中调用它,还是可以在该方法中创建一个方法? 这是我之前写的方法: public static void isSorted(int[] checkArray) { boolean isSorted = tru

我有一个家庭作业,要求我:

编写一个方法
sort(int[]arr)
,该方法接受整数数组并使用 方法来确定数组是否按顺序排序 是否增加顺序。如果已排序,则应返回 数组,如果不是,则该方法应在返回前对数组进行排序 它

我的问题是,我不知道该如何处理这项任务?我应该修改以前的方法,在新方法中调用它,还是可以在该方法中创建一个方法? 这是我之前写的方法:

public static void isSorted(int[] checkArray) {
    boolean isSorted = true;
    for (int i = 1; i < checkArray.length; i++) {
        if (checkArray[i - 1] > checkArray[i]) {
            isSorted = false;
publicstaticvoidissorted(int[]checkArray){
布尔值isSorted=true;
for(int i=1;icheckArray[i]){
isSorted=假;
Thanx提前

我读到“使用[the]方法”的意思是“调用该方法”。也就是说,在排序之前测试排序似乎有些毫无意义,因此可能值得与给你分配该任务的人反复检查


您以前的方法的一个问题是,它不会返回任何内容。您需要对此做些什么以使其有用。

这就是您想要做的:

public int[]排序(int[]arr)
{
如果(isSorted(arr))
返回arr;
其他的
{
\\你的分类码在这里
返回排序的数组;
}
}

为了让您真正了解一些东西,我的解决方案如下:

public int[] sort(int[] arr) {
    if (!isSorted(arr))
        Arrays.sort(arr);
    return arr;
}
数组的文档。排序

这不仅更加简洁,还可以进行适当的排序。这意味着,它不需要复制传入的数组,进行工作,然后返回副本,而只需在原始数组上执行工作。这使得它稍微快一点,并意味着它占用了最小的额外空间。当输入大小为10时,这没什么大不了的,但是当你达到1000万的时候,它就会出现。另外,请注意赋值的措辞:
如果已经排序,它应该返回数组,如果没有排序,方法应该在返回数组之前对数组进行排序。
从技术上讲,返回原始数组的副本不是赋值想要的。它需要原始数组

所以它短、干净、快速、内存高效。它一定很好,对吗

不,因为它有一个巨大的缺陷。它打破了方法的隐含契约。更改其参数的函数不应返回任何内容,而返回某些内容的函数不应修改其参数。这是软件工程的基本原则(也是Array.sort演示的原则).违反这条规定会给那些认为你有能力并且不会违反这条规定的人带来巨大的问题

如果我们遵循规则,
排序应为:

public void sort(int[] arr) {
    if (!isSorted(arr))
        Arrays.sort(arr);
}

因此,告诉你的老师你在互联网上遇到的一只装甲仓鼠,说它停止教你糟糕的界面设计。

你不能在方法中声明方法。你的作业是告诉你使用上一个练习中的方法来检查数组是否按递增顺序排序。使用它。
public void bar(){foo();}
我从
bar()调用
foo()
方法
method。与您的赋值概念相同。有些排序算法对已排序的数据执行得非常糟糕,因此事先进行健全性检查是合理的。没错。在实际赋值中,我调用了该方法并打印结果。@Floegipoky:获得了点。而且,这毕竟只是一个练习。我认为重点是jusI don’我不知道如何去做,不管它是否毫无意义。那么在实践中我应该怎么做呢?我知道如何使用java.util.Arrays.sort方法,但我的问题是将我已经编写的方法与一个返回数组或对其排序的新方法相结合……非常感谢!这似乎是一个更好的方法。我一定会告诉他哈哈.