2013-10-20 83 views
1

我对Android和Java开发非常陌生。我正在尝试创建一个非常基本的4x4数独应用程序。但是,当我运行代码时,UI会崩溃。我不确定哪部分代码不正确。数独解决方案检查android

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

的logcat的告诉你,你犯了一个错误。发布您的logCat错误。 – Razgriz

+0

编辑您的文章并发布到那里,而不是在这里。 – Razgriz

+0

谢谢...发布了LogCat错误.. – user2899503

回答

1

一个或以上的的EditText小部件被宣布为TextView的level1.xml。可能显示器生成器

+0

宾果......你是对的..我马上改变它。谢谢!! – user2899503

0

在 “setmatrix” 方法我看来 使用 “的try-catch”,例如:

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

谢谢..我会尝试异常处理。 – user2899503