2017-02-09 2 views
1

Я хочу проверить, имеют ли два массива одинаковые элементы, но он говорит, что отсутствует оператор возврата, хотя я вернулся, как показано ниже. В чем проблема? Мой метод может получить правильное значение, если я пишу в функции void.Boolean class отсутствует инструкция return java

public static boolean get(int[] One, int[] Two, int target) { 
    int [] temp = new int[One.length]; 
    for (int i = 0 ; i < One.length; i ++){ 
     temp[i] = target - One[i]; 
    } 

    for (int m = 0; m < temp.length; m++){ 
     for (int n = 0; n < Two.length; n ++){ 
      if (temp[m]==Two[n]){ 
       return true; 
      } 
      else return false; 
     } 

    } 

}

+0

вашего кода совсем не так, я ответил, как удалить эту ошибку, но я думаю, что ваш код не является истинным ... –

ответ

1

компилятор не будет принимать его, потому что можно дойти до конца, никогда не возвращая ничего. Вы можете структурировать его так, чтобы независимо от ввода, он всегда будет возвращать true или false.

public static boolean get(int[] One, int[] Two, int target) { 
    int [] temp = new int[One.length]; 

    for (int i = 0 ; i < One.length; i ++){ 
     temp[i] = target - One[i]; 
    } 

    for (int m = 0; m < temp.length; m++){ 
     for (int n = 0; n < Two.length; n ++){ 
      if (temp[m]==Two[n]){ 
       return true; 
      } 
      else { 
       return false; 
      } 
     } 
    } 

    return false; 
} 
+0

это не эффективно, попробуйте 'return true' in for loop –

+0

вы новичок в stackoverflow, посмотрите на op, it возвращает 'false' в' else', добавляет его, я не собираюсь ниспровергать ваше решение, исправляю его, я буду его повышать :) –

+0

Ой, спасибо, я пропустил это – jarthur

0

Это возможно для функции, чтобы закончить без возврата, если либо temp.length или Two.length равны 0.

0

я понятия не имею, что ты будешь делать, но если добавить return false; в последний линия вашего метода, он будет работать

public static boolean get(int[] One, int[] Two, int target) { 
    int [] temp = new int[One.length]; 
    for (int i = 0 ; i < One.length; i ++) 
     temp[i] = target - One[i]; 

    for (int m = 0; m < temp.length; m++){ 
     for (int n = 0; n < Two.length; n ++){ 
      if (temp[m]==Two[n]) return true; 
      else return false; 
     } 
    } 
    return false; 
} 
0

Подумайте о том, что произойдет, если temp.length является 0 ...

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