0

我正在编写一个具有Buttonwhich 调用的 Android 应用程序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");
        }
    }
}
4

3 回答 3

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;
于 2012-06-05T15:51:49.183 回答
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
    }
}
于 2012-06-05T15:49:04.093 回答
0

使用此代码,这应该可以完美运行

TextView tx= (TextView) findViewById(R.id.text);
        Random r = new Random();
        int x = r.nextInt(2) % 2 + 1;
        tx.setText("" +x);
于 2012-06-05T15:51:24.963 回答