首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Android中调用随机方法

在Android中调用随机方法
EN

Stack Overflow用户
提问于 2014-03-06 17:15:20
回答 3查看 1K关注 0票数 1

我有一个问题,我真的不知道是否可能意识到这一点。情况就是这样,我有五个方法和一个按钮。实际上,如果我想调用一个方法,点击我写的按钮:

代码语言:javascript
代码运行次数:0
运行
复制
    btnore.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            //i call the method I need
            Met_one();
        }
    });

我需要做的是:

代码语言:javascript
代码运行次数:0
运行
复制
    btnore.setOnClickListener(new View.OnClickListener() {
    @Override
        public void onClick(View arg0) {
            // a random function call the methods. 
            Random = random of the methods(Met_one,     Met_two,Met_three,Met_four,Met_five)
        }   
    });

所以用这种方式,当我点击按钮时,它有时会做一种动作,有时会随机地执行另一种动作。有可能吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-06 17:24:17

我认为最好的解决办法是使用带随机数的开关。

就像这样:

代码语言:javascript
代码运行次数:0
运行
复制
Random random = new Random();
int numberOfMethods = 4;

switch(random.nextInt(numberOfMethods)) {
     case 0: 
          method1();
          break;
     case 1: 
          method2();
          break;
     case 2: 
          method3();
          break;
     case 3: 
          method4();
          break;
     default: 
     method1();
}
票数 6
EN

Stack Overflow用户

发布于 2014-03-06 17:41:09

在java Math.random() * 5中,这将返回范围为0、5的值。当您按下Button时,您可以调用它。

onCreate内部

代码语言:javascript
代码运行次数:0
运行
复制
Button btn1=(Button)findViewById(R.id.button1);
btn1.setOnClickListener(btnOnClickListener);

代码语言:javascript
代码运行次数:0
运行
复制
Button.OnClickListener btnOnClickListener=new Button.OnClickListener()
    {

     @Override
     public void onClick(View v) {

          if(v==b1)
{
// your Math.random() * 5 function can invoke.
}

     }
票数 1
EN

Stack Overflow用户

发布于 2014-03-06 17:20:45

是的这是可能的。如果你有固定数的方法,概率是1/n。例如,5,概率是0.2。您可以使用这样的方法,每次单击按钮时都会重新生成rand:

代码语言:javascript
代码运行次数:0
运行
复制
if (rand < 0.2)
    Met_one()
else if (rand < 0.4)
    Met_two()
else if (rand < 0.6)
    Met_three()
... etc
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22231401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档