Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse(Android SDK)中的“不可访问”代码错误_Java - Fatal编程技术网

Java Eclipse(Android SDK)中的“不可访问”代码错误

Java Eclipse(Android SDK)中的“不可访问”代码错误,java,Java,我现在正在跟随纽伯顿的一个教程。我在while循环中不断遇到无法访问的代码错误,这是为了不断检查holder是否为true 编辑此问题已解决 SurfaceHolder ourHolder; Thread ourThread = null; boolean isRunning = true; public MyBringBackSurface(Context context) { super(context); ourHolder

我现在正在跟随纽伯顿的一个教程。我在while循环中不断遇到无法访问的代码错误,这是为了不断检查holder是否为true

编辑此问题已解决

    SurfaceHolder ourHolder;
    Thread ourThread = null;
    boolean isRunning = true;

    public MyBringBackSurface(Context context) {
        super(context);
        ourHolder = getHolder();
        ourThread = new Thread(this);
        ourThread.start();
    }

    public void pause(){
        isRunning = false;
        while(true){
            try {
                ourThread.join();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            break;
        }
        ourThread = null;
    }
    public void resume(){
        isRunning = true;
        ourThread = new Thread(this);
        ourThread.start();
    }


    @Override
    public void run() {
        // TODO Auto-generated method stub
        while(isRunning){
            if(!ourHolder.getSurface().isValid());
                continue;   

                Canvas canvas = ourHolder.lockCanvas(); //Unreachable code
                canvas.drawRGB(02, 02, 150);
                ourHolder.unlockCanvasAndPost(canvas);
        }
    }
}
这样做:

   if(!ourHolder.getSurface().isValid())   // remove semicolon 
            continue; 

您真的应该添加更多信息,哪一行显示的是错误,但这让我觉得非常奇怪

if (!ourHolder.getSurface().isValid());
   continue;
如果为true或false,您正在执行的条件也不会执行任何内容。可能是这样的

if (!ourHolder.getSurface().isValid())
   continue;
更好的是,使用括号,当然,还有适当的缩进

if (!ourHolder.getSurface().isValid()) {
   continue;
}

从本质上说,自那以后,继续;不在if语句中,它将始终执行。这将退出循环,使循环代码的其余部分无用,因为它永远不会被执行。由于编译器知道此类代码可能是编程错误的结果,因此会抛出一个错误来警告程序员。

您的代码格式错误。应改为:

while(isRunning){
    if(!ourHolder.getSurface().isValid()) {
        continue;   // without brackets it's always continue, regardless of the if
    }

    Canvas canvas = ourHolder.lockCanvas(); //Unreachable code
    canvas.drawRGB(02, 02, 150);
    ourHolder.unlockCanvasAndPost(canvas);
}

你应该把它移走;如果之后!我们的holder.getSurface.isValid

正确。但最好也加上{}ya。同意。但对于单行,我们也可以这样做。为了清楚起见,我更喜欢括号。我会从条件中去掉半科林。我同意代码有错误的缩进,这使得阅读更困难,但这如何解决问题?它根本解决不了问题。它只是说明了问题所在。我现在还添加了显而易见的解决方案。@SJuan76 Oh监督了。。。删除了评论。