Отсутствует оператор возврата - int [] - PullRequest
0 голосов
/ 21 марта 2012

Я программирую метод на 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;
            }
        }
    }
}

Каждый раз, когда я компилирую, выдает ошибку: отсутствует оператор возврата Когда я ставлю «вернуть 0;» в код перед последним '}', он выдает ошибку неправильного типа возврата, т. е. 0 - это int, и мне нужно int [] return.

Ответы [ 8 ]

4 голосов
/ 21 марта 2012

Вы должны вернуть с целочисленным массивом, а не целым числом, или изменить тип возврата сигнатуры метода на void.

public void sortArray(String [] args) {
  // ...
}
2 голосов
/ 21 марта 2012

Какой метод означал для возврата? Ваш метод сортируется на месте - зачем вообще что-либо возвращать? Вы можете просто сделать его пустым методом:

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 во внутреннем цикле ... это преднамеренно?)

1 голос
/ 21 марта 2012
  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

0 голосов
/ 21 марта 2012

Если вы не хотите возвращать какое-либо значение, измените тип возвращаемого значения на void. Если вы хотите вернуть что-то, используйте соответствующий тип данных, в вашем случае вы должны вернуть переменную массива int.

0 голосов
/ 21 марта 2012

В параметрах Java указывается ссылка (char * args) в C / C ++.Так что вам не нужно ничего возвращать в этом разделе, просто используйте массив args в вызывающей программе, и все будет хорошо:)

0 голосов
/ 21 марта 2012

Вы, вероятно, просто хотите вернуть args или изменить свой метод на void

0 голосов
/ 21 марта 2012

В вашей функции нет оператора возврата!Таким образом, ошибка компиляции ... Кажется, вы работаете непосредственно с args[], поэтому ничего не возвращайте (функция void)

0 голосов
/ 21 марта 2012

Измените сигнатуру вашего метода сортировки на void.В противном случае он ожидает, что вы вернете отсортированный массив int в конце вашего метода.

Если вы хотите вернуть отсортированный массив строк, измените свой метод следующим образом:

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;
}
...