2015-11-30 3 views
1

Я в тупике, почему этот код бросает вызов, не имея выражения возврата, когда у меня есть один включенный. Любая помощь будет оценена!Почему я получаю «отсутствующий оператор возврата», хотя у меня есть оператор в коде?

код в вопросе:

public static int getSize() 
    { 
     Scanner kbd = new Scanner(System.in); 
     int x = 1; 
     while(x==1){ 
     System.out.println("Enter the size (>0): "); 
     int n = kbd.nextInt(); 
     if (n>0){ 
      x--; 
      return n; 
     } 
     } 
    } 

ответ

4

Вы получаете ошибку, потому что не все пути кода возвращают значение.

Добавьте эту строку: return 0; в конце метода:

public static int getSize() 
{ 
    Scanner kbd = new Scanner(System.in); 
    int x = 1; 
    while(x==1){ 
     System.out.println("Enter the size (>0): "); 
     int n = kbd.nextInt(); 
     if (n>0){ 
      x--; 
      return n; 
     } 
    } 

     return 0; // Add this line 
} 

Пусть n <= 0. Тогда существующий оператор return никогда не будет называться, поэтому метод никогда не будет return. Поэтому вам нужно заверить компилятор, что метод вернет значение по умолчанию, независимо от того, добавив return 0.

+0

Большое спасибо! Как студент первого курса в CS, приятно иметь так много людей, желающих помочь. – MooTorial

+0

Добро пожаловать :) Удачи! –

1

Там же в цикле с return, но компилятор не уверен, что петля не выходит, не задев это заявление. Поскольку он считает, что конец функции может быть достигнут, он дает эту ошибку.

0

Ваш код не достигнет оператора возврата во всех случаях. Вам нужно будет добавить оператор возврата по умолчанию за пределы вашего цикла.

0

Потому что вы не охватывает все пути в-плюсом вашего кода, я имею в виду, если n>0 ложно, то метод никогда не будет ничего возвращать

попробовать это

public static int getSize() 
    { 
     Scanner kbd = new Scanner(System.in); 
     int x = 1; 
     while(x==1){ 
     System.out.println("Enter the size (>0): "); 
     int n = kbd.nextInt(); 
     if (n>0){ 
      x--; 
      return n; 
     } 
     } 

     // Bad response 
     return -1; 
    } 
Смежные вопросы