2013-12-05 2 views
-1

Я начал изучать определенные пользователем исключения в Java. И я создал простую программу стека для реализации моего собственного переполнения стека и исключения стека стека. Все в порядке, но в «поп-блоке» я получаю «отсутствующую ошибку оператора return», хотя я вернул значение.Отсутствует ошибка оператора return, хотя оператор return в используемом

Код:

import java.io.*; 
class StackFullException extends Exception 
{ 
    private int a; 
    StackFullException(int x) 
    { 
     a=x; 
    } 
    public String toString() 
    { 
     return "Stack Overflow"; 
    } 
} 

class StackEmptyException extends Exception 
{ 
    private int a; 
    StackEmptyException(int x) 
    { 
     a=x; 
    } 
    public String toString() 
    { 
     return "Stack underflow"; 
    } 
} 

class Stack 
{ 
    int n=5; 
    int top=-1; 
    int st[]=new int[10]; 
    void push(int val) 
    { 
     try 
     { 
      if(top==n-1) 
      { 
       throw new StackFullException(top); 
      } 
      else 
      { 
       top++; 
       st[top]=val; 
      } 
     } 
     catch(StackFullException e) 
     { 
      System.out.print("\n"+e); 
     } 
} 

int pop() 
{ 
    try 
    { 
     if(top==-1) 
      throw new StackEmptyException(top); 
     else 
     { 
      int tmp; 
      tmp=st[top]; 
      top--; 
      return tmp; 
     } 
    } 
    catch(StackEmptyException e) 
    { 
     System.out.print("\n"+e); 
    } 
} 
} 

class StackDemo 
{ 
public static void main(String args[])throws IOException 
{ 
BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 
int item; 
Stack s=new Stack(); 
System.out.print("\nEnter the elements :"); 
for(int i=0;i<7;i++) 
{ 
item=Integer.parseInt(br.readLine()); 
s.push(item); 
} 
} 
} 

Примечание: Я не написал хлопков участие в основной еще.

ответ

1

Внутри условия ifcatch нет return

catch(StackEmptyException e) 
{ 
    System.out.print("\n"+e); 
    //Should be a return here 
} 

или не поймать его, просто выбросить его

int pop() throws StackEmptyException 
+1

Нет, нет. Бросок заменяет возвращение. Ничего, - отредактировал я :) –

+0

Мой триггерный палец быстрее моего мозга, я имел в виду 'catch', я отредактировал –

+1

Но если я использую броски, он не отображает сообщение, написанное в методе toString. –

0

Вам нужно вернуться внутрь из catch блока.

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