Java 空指针异常:尝试为3x3x3 tic tac toe制作android应用程序
我检查了logcat,发现一个NullPointerException错误。 我是一名编程初学者,请帮助我。 上次我遇到了一个类似的问题,因为我没有初始化数组。 但我想不出这次出了什么问题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
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]=' ';
}
}
}