2013-05-17 42 views
0

按鈕時,我試圖做的是:無限循環被點擊的Android

如果EditText上輸入等於生成的隨機數,然後停止循環,否則繼續循環,復位輸入文本。

出於某種原因,我得到一個無限循環。我是編程新手,任何幫助都非常感謝。

下面是代碼:

public class Main extends Activity implements OnClickListener{ 

private TextView tvResult; 
private TextView tvRandTest; 
private EditText et1; 
private String randonNumber; 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    tvResult = (TextView) findViewById(R.id.textView4); 
    tvRandTest = (TextView) findViewById(R.id.textView3); 

    et1 = (EditText) findViewById(R.id.editText1); 
}//End Main 

public void myClickHandler(View view) 
{    
    if(view.getId() == R.id.button1) 
    {         
     //Generates 6 one digit Random Numbers 
     int randonNumber1 = (int) (0 + Math.random() * 9); 

     //Parse Numbers    
     String rd1 = Integer.toString(randonNumber1); 

     randonNumber = rd1; 

    boolean done = false;  
    do   
     { 

     et1.getText().toString(); 
     if(et1.equals(randonNumber)) 
     { 
      Toast.makeText(Main.this,"Equal Number", Toast.LENGTH_SHORT).show(); 
      tvResult.setText(randonNumber); 
      done = true; 
     }//end if 
     else 
     { 
      Toast.makeText(Main.this,"Not Equal Number", Toast.LENGTH_SHORT).show(); 

      et1.setText(""); 

     }//end else 

     }//End While 
    while(!done); 

    }//End if 


    if(view.getId() == R.id.button2) 

     { 

      tvRandTest.setText(randonNumber); 
     } 


}//End Method 

@Override 
public void onClick(View arg0) { 
    // TODO 
} 
}//End Class 

回答

0
if(et1.equals(randonNumber)) 

我將與

if(et1.equals(String.valueOf(randonNumber))) 
你把直接

改變它的equals方法中的int值會發生兩兩件事:

  1. autboxing將創建一個Integer對象,從int值
  2. 將通過此對象調用toString()方法。

整數的android系統中的toString()方法,如DOC表示:

Returns a string containing a concise, human-readable description of this object. 

所以,你與ET1的內容,而不是用其真正的價值在容比較新對象的地址。 Here參考

0

在此行et1.getText().toString();需要結果賦給變量,例如String input = et1.getText().toString();然後在下一行,你需要比較兩個字符串,if(input.equals(randonNumber))但你的程序可以在UI線程掛起無限循環的原因。您應該使用TextWatcher 來處理EditText中的文本發生更改時