我是Android和Java开发的新手。我正在尝试创建一个非常基本的4x4数独应用程序。但是,当我运行代码时,UI崩溃了。我不确定代码的哪一部分是不正确的。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.level1);
findviewbyidfunc();
checksol.setOnClickListener(new View.OnClickListener() {
public void onClick(View v)
{
setmatrix();
ans=check(mat);
dispsol();
}
});
}
public void findviewbyidfunc()
{
checksol=(Button)findViewById(R.id.checksol1);
r11=(EditText)findViewById(R.id.r1c1);
r21=(EditText)findViewById(R.id.r2c1);
r31=(EditText)findViewById(R.id.r3c1);
r41=(EditText)findViewById(R.id.r4c1);
r12=(EditText)findViewById(R.id.r1c2);
r22=(EditText)findViewById(R.id.r2c2);
r32=(EditText)findViewById(R.id.r3c2);
r42=(EditText)findViewById(R.id.r4c2);
r13=(EditText)findViewById(R.id.r1c3);
r23=(EditText)findViewById(R.id.r2c3);
r33=(EditText)findViewById(R.id.r3c3);
r43=(EditText)findViewById(R.id.r4c3);
r14=(EditText)findViewById(R.id.r1c4);
r24=(EditText)findViewById(R.id.r2c4);
r34=(EditText)findViewById(R.id.r3c4);
r44=(EditText)findViewById(R.id.r4c4);
displayanswer=(EditText)findViewById(R.id.answer);
}
设置矩阵的代码。
public void setmatrix()
{
//Column one
mat[1][1]=Integer.parseInt(r11.getText().toString());
mat[2][1]=Integer.parseInt(r21.getText().toString());
mat[3][1]=Integer.parseInt(r31.getText().toString());
mat[4][1]=Integer.parseInt(r41.getText().toString());
//Column two
mat[1][2]=Integer.parseInt(r12.getText().toString());
mat[2][2]=Integer.parseInt(r22.getText().toString());
mat[3][2]=Integer.parseInt(r32.getText().toString());
mat[4][2]=Integer.parseInt(r42.getText().toString());
//Column three
mat[1][3]=Integer.parseInt(r13.getText().toString());
mat[2][3]=Integer.parseInt(r23.getText().toString());
mat[3][3]=Integer.parseInt(r33.getText().toString());
mat[4][3]=Integer.parseInt(r43.getText().toString());
//Column four
mat[1][4]=Integer.parseInt(r14.getText().toString());
mat[2][4]=Integer.parseInt(r24.getText().toString());
mat[3][4]=Integer.parseInt(r34.getText().toString());
mat[4][4]=Integer.parseInt(r44.getText().toString());
}
验证矩阵的代码。
public boolean check(Integer arr[][])
{
Integer[] count={0,0,0,0,0};
Integer[] count1={0,0,0,0,0};
Boolean b=true;
for(int i=1;i<4;i++)
{
for(int j=1;j<4;j++)
{
if(count[arr[j][i]]>i)
{
b=false;
return b;
}
if(count1[arr[i][j]]>i)
{
b=false;
return b;
}
count1[arr[i][j]]++;
count[arr[j][i]]++;
}
}
return b;
}
如果我删除了侦听器代码及其相关功能,那么界面工作正常。不确定是什么问题。
答案 0 :(得分:1)
level1.xml 中的一个或多个 EditText 小部件被声明为 TextView 。可能 displayanswer 。
答案 1 :(得分:0)
在我看来 使用&#34; try-catch&#34; in&#34; setmatrix&#34;方法,例如:
try
{
mat[1][1]=Integer.parseInt(r11.getText().toString());
}
catch(Exception ex)
{
mat[1][1]=0;
}