缺少退货声明 - int []

时间:2012-03-21 08:56:06

标签: java arrays integer int

我正在用Java编写一个方法(第一次这样做),当我编译时我遇到了一个小错误,尽管调试了数百次,我仍然不明白我哪里出错了。最后,我转向互联网寻求帮助。

以下是我的代码中有问题的部分:

    public int[] sortArray(String [] args) {
        String temp = "";
        for(int x = 0; x < args.length; x++){
            for(int y = 1; y < args.length - 1; y++){
            if(Integer.parseInt(args[y-1])>Integer.parseInt(args[y])){
                temp = args[y-1];
                args[y-1] = args[y];
                args[y] = temp;
            }
        }
    }
}

每次编译它都会提供错误:缺少return语句 当我把“返回0;”在最后一个'}'之前的代码中,它给出了错误类型的返回错误,即0是一个int,我需要一个int []返回。

8 个答案:

答案 0 :(得分:4)

您应该返回一个整数数组而不是整数,或者将方法签名的返回类型更改为void

public void sortArray(String [] args) {
  // ...
}

答案 1 :(得分:2)

返回意味着的方法是什么?你的方法到位排序 - 为什么它需要返回任何东西?你可以把它变成一个无效的方法:

public void sortArray(String[] args) {
    for (int x = 0; x < args.length; x++) {
        for (int y = 1; y < args.length - 1; y++) {
        if (Integer.parseInt(args[y-1]) > Integer.parseInt(args[y])) {
            // Note change of declaration location: in general, declare
            // variables with minimal scope
            String temp = args[y - 1];
            args[y - 1] = args[y];
            args[y] = temp;
        }
    }
}

(注意你在这里做了很多不必要的解析,而且你从来没有在你的内循环中使用x的值......是故意的吗?)

答案 2 :(得分:1)

  public String[] sortArray(String [] args) {
            String temp = "";
            for(int x = 0; x < args.length; x++){
                for(int y = 1; y < args.length - 1; y++){
                if(Integer.parseInt(args[y-1])>Integer.parseInt(args[y])){
                    temp = args[y-1];
                    args[y-1] = args[y];
                    args[y] = temp;
                }
            }
        }
            return args;
    }

或使用void type

答案 3 :(得分:0)

将排序方法的签名更改为void。否则,它希望您在方法结束时返回已排序的int数组。

如果要返回已排序的String数组,请按以下方式更改方法:

public String[] sortArray(String [] args) {
    String temp = "";
    for(int x = 0; x < args.length; x++){
        for(int y = 1; y < args.length - 1; y++){
        if(Integer.parseInt(args[y-1])>Integer.parseInt(args[y])){
            temp = args[y-1];
            args[y-1] = args[y];
            args[y] = temp;
        }
     }
  }
  return args;
}

答案 4 :(得分:0)

您的函数中没有return语句!因此编译错误......看来你直接在args[]上工作,所以不要返回任何东西(void function)

答案 5 :(得分:0)

您可能只想返回args或将方法更改为void

答案 6 :(得分:0)

在java参数中,引用类似于C / C ++中的(char * args)。所以你不需要在本节中返回任何内容只需在调用者中使用args数组就可以了:)

答案 7 :(得分:0)

如果您不想返回任何值,请将返回类型更改为void。如果你想返回任何东西,那么使用适当的数据类型,在你的情况下你应该返回int数组变量。