将TextField的值设置为随机数

时间:2012-06-05 15:45:02

标签: java android random if-statement

我正在编写一个Android应用,其Button调用SelfDestruct()。还有TextView应显示随机选择的12。但是,如果它显示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");
        }
    }
}

3 个答案:

答案 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);