2012-03-21 5 views
0

Я программирую метод в Java (впервые делаю это), и я натолкнулся на небольшую ошибку, когда компилировался, и я до сих пор не понимаю, где я ошибаюсь, несмотря на отладку сотни раз. Наконец-то я «м обращаются к Интернету за помощьюОтсутствует заявление о возврате - int []

Вот часть моего кода с проблемами:.

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

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

+0

Как вы можете отлаживать его сотни раз, если он не компилируется? –

+1

Я предполагаю, что это '[домашняя работа]' иначе вы бы использовали 'Arrays.sort()' –

ответ

4

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

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

Изменить подпись своего метода сортировки на 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; 
} 
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 во внутреннем цикле ... это преднамеренным?)

0

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

0

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

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

0

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

0

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

Смежные вопросы