我正在编写一个Android应用,其Button
调用SelfDestruct()
。还有TextView
应显示随机选择的1
或2
。但是,如果它显示1
,则始终1
将设置,2
相同。它应该始终创建一个随机数。
这是我的代码,请有人帮我实现这个目标......
public class MainActivity extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public void SelfDestruct(View View)
{
TextView tx= (TextView) findViewById(R.id.text);
Random r = new Random();
int x=r.nextInt(2-1) + 1;
if(x==1)
{
tx.setText("1");
}
else if(x==2)
{
tx.setText("2");
}
}
}
答案 0 :(得分:1)
我很确定问题出在这一行:
r.nextInt(2-1) + 1;
nextInt(n)
返回0(包括)和n(不包括)之间的数字。这意味着您可以获得介于0和.99之间的任何数字,因为您将1作为参数传递给nextInt()
。你总是得到1,因为0 - .99 + 1范围内的任何数字都会变为1。
你真正想要的数字在1 - 2范围内,试试这个:
r.nextInt(2) + 1;
答案 1 :(得分:0)
这适合你:
public class MainActivity extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public void SelfDestruct(View View)
{
TextView tx= (TextView) findViewById(R.id.text);
Random r = new Random();
int x=r.nextInt(2) + 1; // r.nextInt(2) returns either 0 or 1
tx.setText(""+x); // cast integer to String
}
}
答案 2 :(得分:0)
使用此代码,这应该可以正常工作
TextView tx= (TextView) findViewById(R.id.text);
Random r = new Random();
int x = r.nextInt(2) % 2 + 1;
tx.setText("" +x);