0

私がやろうとしていることは次のとおりです。

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
4

2 に答える 2

0

この行et1.getText().toString();では、結果を変数に代入する必要があります。たとえばString input = et1.getText().toString();、次の行では、2 つの文字列を比較する必要があります。if(input.equals(randonNumber))ただし、UI スレッドで無限ループが発生して、プログラムがハングする可能性があります。 EditTextのテキストが変更されたときに処理するには、TextWatcherを使用する必要があります。

于 2013-05-17T15:45:46.567 に答える