Java 空指针异常:尝试为3x3x3 tic tac toe制作android应用程序

Java 空指针异常:尝试为3x3x3 tic tac toe制作android应用程序,java,android,Java,Android,我检查了logcat,发现一个NullPointerException错误。 我是一名编程初学者,请帮助我。 上次我遇到了一个类似的问题,因为我没有初始化数组。 但我想不出这次出了什么问题 package com.example.test2; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widge

我检查了logcat,发现一个NullPointerException错误。 我是一名编程初学者,请帮助我。 上次我遇到了一个类似的问题,因为我没有初始化数组。 但我想不出这次出了什么问题

package com.example.test2;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class Mid extends Activity {

    char[][][] a=new char[3][3][3];
        char b=' ';
        int i=0,j=0,k=0,l=0,o=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mid);



        for(j=0;j<3;j++)
        {for(k=0;k<3;k++)
        {for(k=0;k<3;k++)
        {
            a[j][k][l]=' ';
        }
        }
        }
        Button btnt1 = (Button)findViewById(R.id.btnt1);
        Button btnt2 = (Button)findViewById(R.id.btnt2);
        Button btnt3 = (Button)findViewById(R.id.btnt3);
        Button btnt4 = (Button)findViewById(R.id.btnt4);
        Button btnt5 = (Button)findViewById(R.id.btnt5);
        Button btnt6 = (Button)findViewById(R.id.btnt6);
        Button btnt7 = (Button)findViewById(R.id.btnt7);
        Button btnt8 = (Button)findViewById(R.id.btnt8);
        Button btnt9 = (Button)findViewById(R.id.btnt9);
        Button btnm1 = (Button)findViewById(R.id.btnm1);
        Button btnm2 = (Button)findViewById(R.id.btnm2);
        Button btnm3 = (Button)findViewById(R.id.btnm3);
        Button btnm4 = (Button)findViewById(R.id.btnm4);
        Button btnm5 = (Button)findViewById(R.id.btnm5);
        Button btnm6 = (Button)findViewById(R.id.btnm6);
        Button btnm7 = (Button)findViewById(R.id.btnm7);
        Button btnm8 = (Button)findViewById(R.id.btnm8);
        Button btnm9 = (Button)findViewById(R.id.btnm9);
        Button btnb1 = (Button)findViewById(R.id.btnb1);
        Button btnb2 = (Button)findViewById(R.id.btnb2);
        Button btnb3 = (Button)findViewById(R.id.btnb3);
        Button btnb4 = (Button)findViewById(R.id.btnb4);
        Button btnb5 = (Button)findViewById(R.id.btnb5);
        Button btnb6 = (Button)findViewById(R.id.btnb6);
        Button btnb7 = (Button)findViewById(R.id.btnb7);
        Button btnb8 = (Button)findViewById(R.id.btnb8);
        Button btnb9 = (Button)findViewById(R.id.btnb9);
        Button top = (Button)findViewById(R.id.top);
        Button mid = (Button)findViewById(R.id.mid);
        Button bot = (Button)findViewById(R.id.bot);
        top.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {
                setContentView(R.layout.top);
        }});
        mid.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {
                setContentView(R.layout.mid);
        }});
        bot.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {
                setContentView(R.layout.bot);
        }});
        btnt1.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {
                 if(i%2==1) {b='X';}
                 else {b='O';}
                 i++;
             TextView opt1 = (TextView)findViewById(R.id.btnt1);
             opt1.setText(String.valueOf(b));a[0][0][0]=b;j=0;k=0;
             check(a,j,k,l,o);
        }});
        btnt2.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {if(i%2==1) {b='X';}
         else {b='O';}
         i++;

                TextView opt2 = (TextView)findViewById(R.id.btnt2);
             opt2.setText(String.valueOf(b));a[0][0][1]=b;j=0;k=1;
             check(a,j,k,l,o);
        }});
        btnt3.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {if(i%2==1) {b='X';}
         else {b='O';}
         i++;

                TextView opt3 = (TextView)findViewById(R.id.btnt3);
             opt3.setText(String.valueOf(b));a[0][0][2]=b;j=0;k=2;
             check(a,j,k,l,o);
        }});
        btnt4.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {if(i%2==1) {b='X';}
         else {b='O';}
         i++;
                 TextView opt4 = (TextView)findViewById(R.id.btnt4);
             opt4.setText(String.valueOf(b));a[0][1][0]=b;j=1;k=0;
             check(a,j,k,l,o);
        }});
        btnt5.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {if(i%2==1) {b='X';}
         else {b='O';}
         i++; 
                TextView opt5 = (TextView)findViewById(R.id.btnt5);
             opt5.setText(String.valueOf(b));a[0][1][1]=b;j=1;k=1;
             check(a,j,k,l,o);
        }});
        btnt6.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {if(i%2==1) {b='X';}
         else {b='O';}
         i++; 
                TextView opt6 = (TextView)findViewById(R.id.btnt6);
             opt6.setText(String.valueOf(b));a[0][1][2]=b;j=1;k=2;
             check(a,j,k,l,o);
        }});
        btnt7.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {if(i%2==1) {b='X';}
         else {b='O';}
         i++; 
                TextView opt7 = (TextView)findViewById(R.id.btnt7);
             opt7.setText(String.valueOf(b));a[0][2][0]=b;j=2;k=0;
             check(a,j,k,l,o);
        }});
        btnt8.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {if(i%2==1) {b='X';}
         else {b='O';}
         i++; 
                TextView opt8 = (TextView)findViewById(R.id.btnt8);
             opt8.setText(String.valueOf(b));a[0][2][1]=b;j=2;k=1;
             check(a,j,k,l,o);
        }});
        btnt9.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {if(i%2==1) {b='X';}
         else {b='O';}
         i++; 
                TextView opt9 = (TextView)findViewById(R.id.btnt9);
             opt9.setText(String.valueOf(b));a[0][2][2]=b;j=2;k=2;
             check(a,j,k,l,o);
        }});
        btnm1.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {
                 if(i%2==1) {b='X';}
                 else {b='O';}
                 i++;
             TextView opm1 = (TextView)findViewById(R.id.btnm1);
             opm1.setText(String.valueOf(b));a[1][0][0]=b;j=0;k=0;
             check(a,j,k,l,o);
        }});
        btnm2.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {if(i%2==1) {b='X';}
         else {b='O';}
         i++;

                TextView opm2 = (TextView)findViewById(R.id.btnm2);
             opm2.setText(String.valueOf(b));a[1][0][1]=b;j=0;k=1;
             check(a,j,k,l,o);
        }});
        btnm3.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {if(i%2==1) {b='X';}
         else {b='O';}
         i++;

                TextView opm3 = (TextView)findViewById(R.id.btnm3);
             opm3.setText(String.valueOf(b));a[1][0][2]=b;j=0;k=2;
             check(a,j,k,l,o);
        }});
        btnm4.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {if(i%2==1) {b='X';}
         else {b='O';}
         i++;
                 TextView opm4 = (TextView)findViewById(R.id.btnm4);
             opm4.setText(String.valueOf(b));a[1][1][0]=b;j=1;k=0;
             check(a,j,k,l,o);
        }});
        btnm5.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {if(i%2==1) {b='X';}
         else {b='O';}
         i++; 
                TextView opm5 = (TextView)findViewById(R.id.btnm5);
             opm5.setText(String.valueOf(b));a[1][1][1]=b;j=1;k=1;
             check(a,j,k,l,o);
        }});
        btnm6.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {if(i%2==1) {b='X';}
         else {b='O';}
         i++; 
                TextView opm6 = (TextView)findViewById(R.id.btnm6);
             opm6.setText(String.valueOf(b));a[1][1][2]=b;j=1;k=2;
             check(a,j,k,l,o);
        }});
        btnm7.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {if(i%2==1) {b='X';}
         else {b='O';}
         i++; 
                TextView opm7 = (TextView)findViewById(R.id.btnm7);
             opm7.setText(String.valueOf(b));a[1][2][0]=b;j=2;k=0;
             check(a,j,k,l,o);
        }});
        btnm8.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {if(i%2==1) {b='X';}
         else {b='O';}
         i++; 
                TextView opm8 = (TextView)findViewById(R.id.btnm8);
             opm8.setText(String.valueOf(b));a[1][2][1]=b;j=2;k=1;
             check(a,j,k,l,o);
        }});
        btnm9.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {if(i%2==1) {b='X';}
         else {b='O';}
         i++; 
                TextView opm9 = (TextView)findViewById(R.id.btnm9);
             opm9.setText(String.valueOf(b));a[1][2][2]=b;j=2;k=2;
             check(a,j,k,l,o);
        }});
        btnb1.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {
                 if(i%2==1) {b='X';}
                 else {b='O';}
                 i++;
             TextView opb1 = (TextView)findViewById(R.id.btnb1);
             opb1.setText(String.valueOf(b));a[2][0][0]=b;j=0;k=0;
             check(a,j,k,l,o);
        }});
        btnb2.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {if(i%2==1) {b='X';}
         else {b='O';}
         i++;

                TextView opb2 = (TextView)findViewById(R.id.btnb2);
             opb2.setText(String.valueOf(b));a[2][0][1]=b;j=0;k=1;
             check(a,j,k,l,o);
        }});
        btnb3.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {if(i%2==1) {b='X';}
         else {b='O';}
         i++;

                TextView opb3 = (TextView)findViewById(R.id.btnb3);
             opb3.setText(String.valueOf(b));a[2][0][2]=b;j=0;k=2;
             check(a,j,k,l,o);
        }});
        btnb4.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {if(i%2==1) {b='X';}
         else {b='O';}
         i++;
                 TextView opb4 = (TextView)findViewById(R.id.btnb4);
             opb4.setText(String.valueOf(b));a[2][1][0]=b;j=1;k=0;
             check(a,j,k,l,o);
        }});
        btnb5.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {if(i%2==1) {b='X';}
         else {b='O';}
         i++; 
                TextView opb5 = (TextView)findViewById(R.id.btnb5);
             opb5.setText(String.valueOf(b));a[2][1][1]=b;j=1;k=1;
             check(a,j,k,l,o);
        }});
        btnb6.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {if(i%2==1) {b='X';}
         else {b='O';}
         i++; 
                TextView opb6 = (TextView)findViewById(R.id.btnb6);
             opb6.setText(String.valueOf(b));a[2][1][2]=b;j=1;k=2;
             check(a,j,k,l,o);
        }});
        btnb7.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {if(i%2==1) {b='X';}
         else {b='O';}
         i++; 
                TextView opb7 = (TextView)findViewById(R.id.btnb7);
             opb7.setText(String.valueOf(b));a[2][2][0]=b;j=2;k=0;
             check(a,j,k,l,o);
        }});
        btnb8.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {if(i%2==1) {b='X';}
         else {b='O';}
         i++; 
                TextView opb8 = (TextView)findViewById(R.id.btnb8);
             opb8.setText(String.valueOf(b));a[2][2][1]=b;j=2;k=1;
             check(a,j,k,l,o);
        }});
        btnb9.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {if(i%2==1) {b='X';}
         else {b='O';}
         i++; 
                TextView opb9 = (TextView)findViewById(R.id.btnb9);
             opb9.setText(String.valueOf(b));a[2][2][2]=b;j=2;k=2;
             check(a,j,k,l,o);
        }});
        }
    public void check(char[][][] a,int j,int k,int l,int o)
    {
        TextView txt = (TextView)findViewById(R.id.txt);
        txt.setText(String.valueOf(j)+String.valueOf(k));
        if(a[i][j][0]==a[i][j][1]&&a[i][j][1]==a[i][j][2]&&a[i][j][0]!=' ') o+=1;
        if(a[i][0][k]==a[i][1][k]&&a[i][1][k]==a[i][2][k]&&a[i][0][k]!=' ') o+=1;
        if(a[0][j][k]==a[1][j][k]&&a[1][j][k]==a[2][j][k]&&a[0][j][k]!=' ') o+=1;
        if(((a[i][0][0]==a[i][1][1]&&a[i][1][1]==a[i][2][2])||(a[i][0][2]==a[i][1][1]&&a[i][1][1]==a[i][2][0]))&&a[i][1][1]!=' ') o+=1;
        if(((a[0][j][0]==a[1][j][1]&&a[1][j][1]==a[2][j][2])||(a[0][j][2]==a[1][j][1]&&a[1][j][1]==a[2][j][0]))&&a[1][j][1]!=' ') o+=1;
        if(((a[0][j][0]==a[1][j][1]&&a[1][j][1]==a[2][j][2])||(a[0][j][2]==a[1][j][1]&&a[1][j][1]==a[2][j][0]))&&a[1][j][1]!=' ') o+=1;
        if(((a[0][0][0]==a[1][1][1]&&a[0][0][0]==a[2][2][2])||(a[0][0][2]==a[1][1][1]&&a[0][0][0]==a[2][2][0])||(a[0][2][0]==a[1][1][1]&&a[0][0][0]==a[2][0][2])||(a[2][0][0]==a[1][1][1]&&a[0][0][0]==a[0][2][2]))&&a[1][1][1]!=' ')  o+=1;

        if(o!=0) {txt.setText("GG");}
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.mid, menu);
        return true;
    }

}

尝试以这种方式更改您的单击侦听器

btnt1.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                 if(i%2==1) {b='X';}
                 else {b='O';}
                 i++;
             TextView opt1 = (TextView)findViewById(R.id.btnt1); // see below
             opt1.setText(String.valueOf(b));a[0][0][0]=b;j=0;k=0;
             check(a,j,k,l,o);
        }});
而且,在每个onClickListener中,您都将您的按钮投射到TextView

TextView opt1=(TextView)findViewById(R.id.btnt1)使用此选项更改它

Button opt1 = (Button)findViewById(R.id.btnt1);
将按钮强制转换为文本视图?删除它,只需执行以下操作:

btn1.setText("your text");

代码中第一个明显的错误是

for(j=0;j<3;j++)
    {for(k=0;k<3;k++)
    {for(k=0;k<3;k++)
    {
        a[j][k][l]=' ';
    }
    }
    }

for(j=0;j哪一行是
Mid.java
的第78行?这是按钮btnt1的点击侦听器。它返回此错误:“类型视图中的方法setOnClickListener(View.OnClickListener)不适用于参数(new OnClickListener(){})-OnClickListener无法解析为类型”尝试重写此方法。@user3445461当我为3x3 tic tac toe制作应用程序时,它在代码中的哪个位置被卡住了?不能在其他方法定义的内部类中引用非最终变量btnb8
btn1.setText("your text");
for(j=0;j<3;j++)
    {for(k=0;k<3;k++)
    {for(k=0;k<3;k++)
    {
        a[j][k][l]=' ';
    }
    }
    }