2013-10-20 84 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