2014-11-26 4 views
0

Я новичок в Java. Я работаю над небольшой практикой программы и получаю сообщение об ошибке отсутствия ошибки.Непонимание отсутствующего оператора возврата

Может ли кто-нибудь помочь?

import java.util.Scanner; 
class nonstatic1 
{ 
    public static void main(String[] args) 
    { 
     // this method works 
     nonstatic2 Ref=new nonstatic2(); 
     int Addition=Ref.add();   
     System.out.println (Addition);  

     String email=email(); 

    } 
     // the one below is the one that does not work and gives me the error 
    public static String email() 
    { 
     Scanner in=new Scanner(System.in); 
     System.out.println("Enter Your email Address"); 
     String email=in.nextLine(); 

     if(email.endsWith(".sc")) 
      return email; 
    } 
} 
+4

Что такое 'электронной почты()' метод должен возвращать если он не заканчивается на .sc? –

+0

должно возвратить электронное письмо, которое вводится пользователем –

+0

, а затем удалить оператор 'if' – talex

ответ

1

Проблема заключается с IF заявления. Вам недостает ветки else. Когда оцененное значение выражения равно false, ваша программа ничего не возвращает, следовательно, ошибка missing return statement.

Изменить его на что-то вроде этого:

if(email.endsWith(".sc")) 
      return email; 
else 
      return "invalid email"; 
+0

ОК спасибо, вы попробуете это и посмотрите, как оно идет –

+0

Привет большое спасибо, что сработало при добавлении else. –

+0

также обратите внимание, что имена классов должны начинаться с буквы верхнего регистра, а переменные и методы всегда с буквой в нижнем регистре, в соответствии со стандартами java-кодирования – MihaiC

5

Если email.endsWith(".sc") возвращает false, функция не имеет оператора возврата.

Поскольку вы объявили тип возврата как String, функция всегда должна возвращать строку (или null).

Так что в вашем случае:

if (email.endsWith(".sc")) { 
    return email; 
} 
return null; //Will only reach if condition above fails. 
+0

Это сработало танком –

1
if(email.endsWith(".sc")) 
     return email; 

Ваш код здесь является неполным. У вас есть заявление return, но только при одном обстоятельстве, когда существует множество обстоятельств.

if(email.endsWith(".sc")) { 
     return email; 
} 
return null; 

Это будет работать, поскольку логика завершена и все возможности покрыты.

1

Ваш метод функции

public static String email() 

объявляет возвращаемое значение типа String. Поэтому вы должны вернуть значение во всех случаях.

В корпусе функции вы вызываете только return в результате if. В случае else заявление return не будет вызываться. Поэтому вам нужно добавить еще return, если if является ложным.

1

, если вы не хотите, чтобы ваш способ вернуть то, что в случае, если пользователь ввести неверные данные, чем идти с этим:

public static String email() 
    { 
     Scanner in=new Scanner(System.in); 
     System.out.println("Enter Your email Address"); 
     String email=in.nextLine(); 

     if(email.endsWith(".sc")) 
      return email; 
     throw new RuntimeException("Dude, enter normal email man!!!"); 
    } 

но каким-либо образом ваш метод должен охватывать все случаи и всегда с возвращением или исключения !

+0

для RuntimeException вам не нужны броски декларация. прочитайте о проверенных и непроверенных исключениях в java. – Hazhir

+0

Пользуюсь твоим словом, моя Ява не лучшая :) –

0

Проблема заключается в том, что компилятор обнаружил путь кода в вашем методе, где вы не можете связаться с оператором return. В частности, если (email.endsWith(".sc") возвращает ложь, то ваш метод не достигнет return email;

Чтобы решить proble вы можете либо добавить в конце вашего метода return null; или return "";

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