我要做的是:
如果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 :(得分:0)
if(et1.equals(randonNumber))
我将用
更改它 if(et1.equals(String.valueOf(randonNumber)))
你直接把int值放在equals方法中会发生两件事:
toString()
方法。 android中的toString()
Integer方法,正如文档所示:
Returns a string containing a concise, human-readable description of this object.
因此,您要将新对象的地址与et1的内容进行比较,而不是将其与实际值进行比较。 Here参考
答案 1 :(得分:0)
在此行et1.getText().toString();
中,您需要将结果分配给变量,例如String input = et1.getText().toString();
然后在下一行中您需要比较两个字符串if(input.equals(randonNumber))
但是您的程序可以挂起无穷大的原因在UI线程上循环。你应该使用TextWatcher
处理EditText中的文本时更改