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
 if(et1.equals(randonNumber))

我会改变它

 if(et1.equals(String.valueOf(randonNumber)))

您直接将 int 值放入 equals 方法中会发生两件事:

  1. 自动装箱将从 int 值开始创建一个 Integer 对象
  2. toString()方法将通过此对象调用。

toString()android中的整数方法,正如文档所代表的那样:

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

因此,您将新对象的地址与 et1 的内容进行比较,而不是与它的实际值进行比较。这里参考

于 2013-05-17T15:33:58.247 回答
0

在这一行et1.getText().toString();中,您需要将结果分配给变量,例如String input = et1.getText().toString();然后在下一行中,您需要比较两个字符串,if(input.equals(randonNumber))但是您的程序可能会在 UI 线程上挂起无限循环的原因。 当 EditText 中的文本发生更改时,您应该使用TextWatcher来处理

于 2013-05-17T15:45:46.567 回答