Java android中的数独解决方案检查

Java android中的数独解决方案检查,java,android,sudoku,Java,Android,Sudoku,我对Android和Java开发非常陌生。我正在尝试创建一个非常基本的4x4数独应用程序。但是,当我运行代码时,UI崩溃。我不确定代码的哪一部分是错误的 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.level1); findviewbyidfunc(); checksol.setO

我对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;
}
编码以验证矩阵。

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;
}
公共布尔检查(整数arr[]
{
整数[]计数={0,0,0,0};
整数[]count1={0,0,0,0};
布尔b=真;
对于(int i=1;ii)
{
b=假;
返回b;
}
count1[arr[i][j]++;
计数[arr[j][i]]++;
}
}
返回b;
}

如果我删除了侦听器代码及其相关函数,则接口工作正常。不确定出了什么问题。

level1.xml中,一个或多个EditText小部件被声明为TextView。可能displayanswer

您的EditText小部件中的一个或多个正在level1.xml中声明为TextView。在我看来,可能显示答案

在“setmatrix”方法中使用“try catch”,例如:

try
{
mat[1][1]=Integer.parseInt(r11.getText().toString());
}
catch(Exception ex)
{
mat[1][1]=0;
}
在我看来 在“setmatrix”方法中使用“try catch”,例如:

try
{
mat[1][1]=Integer.parseInt(r11.getText().toString());
}
catch(Exception ex)
{
mat[1][1]=0;
}

LogCat会告诉你哪里出了错。发布你的logCat错误。编辑你的帖子并在那里发布,而不是在这里。谢谢。。。发布日志猫错误。
原因:java.lang.ClassCastException:android.widget.TextView无法强制转换为android.widget.EditText 10-20 03:16:08.695:E/AndroidRuntime(790):在com.example.sudokunew.Level1_play.findviewbyidfunc(Level1_play.java:53)
Mike M有正确答案。将TextView更改为EditText。。但是我还是看到了一些错误。日志告诉你哪里出了错。发布你的logCat错误。编辑你的帖子并在那里发布,而不是在这里。谢谢。。。发布日志猫错误。
原因:java.lang.ClassCastException:android.widget.TextView无法强制转换为android.widget.EditText 10-20 03:16:08.695:E/AndroidRuntime(790):在com.example.sudokunew.Level1_play.findviewbyidfunc(Level1_play.java:53)
Mike M有正确答案。将TextView更改为EditText。。但我仍然看到了错误。。