2012-03-27 123 views
1

我似乎无法找到解决此问题的方法。我所做的只是声明一个整数,它告诉我代码无法访问。为什么此代码给出“无法访问的代码”错误?

private class myStack{ 
    Object [] myStack = new Object[50]; 

    private void push(Object a){ 
     int count = 50; 
     while(count>0){ 
      myStack[count]=myStack[count-1]; 
      count--; 
     } 
     myStack[0]=a; 
    } 

    private Object pop(){ 
     return myStack[0]; 
     int count2 = 0; //Unreachable Code 
    } 
} 
+7

您从pop()方法返回。之后的任何事情都无法得到。 – 2012-03-27 22:21:35

+11

因为它是'不可达代码'。 – 2012-03-27 22:22:57

+0

吉姆说什么。 “返回”意味着“方法的结束”。 – 2012-03-27 22:23:47

回答

4

一旦您从return一个方法,您返回到第一个方法调用该方法。您在返回后放置的任何语句都是没有意义的,因为这是在严重违反程序计数器的情况下无法达到的代码(可能无法在Java中使用)。

7

通过Jim H.引述关于这个问题的评论:

您从pop()方法返回。之后的任何事情都无法得到。

+2

嘿,对不起,我无法抗拒...我知道这不是讨论这个地方,但老实说,我发现它看到一个问题'没有答案',然后发现有几个伟大的答案张贴为评论恼人。为什么这样做?避免降价风险?恕我直言,它只会让它很难找到一个好的答案。对不起 – jambriz 2012-03-27 23:27:05

+0

任何人都可以枚举导致无法访问代码的其他类型的条件?例如:'while(true){} S.O.P. “//不可达? – Kameron 2012-06-29 13:52:33

0

无法访问的代码导致Java中的编译器错误。

在你的程序行

int count2 = 0; 

将永远不会达到,因为它是return语句之后。

将此行放在return语句上方。

-1

申报前返回myStack [0],修复

+0

没有必要这样做,因为变量myStack先前被删除。正确的答案是被接受的答案。 – GHajba 2015-07-29 06:27:44

0

用简单的英语简单解释是以下几点:

private Object pop(){ 
    return myStack[0]; 
    int count2 = 0; //Unreachable Code 
} 

方法private Object pop(){}正在寻找一个返回类型Object,你刚才给那回报键入return myStack[0];。因此,您的方法不一定会达到int count2 = 0;,因为它假定该方法已达到其目标。