java - 应用程序无需任何用户交互即可运行

标签 java android android-button

显示两个随机数并计算奇数轮和偶数轮的得分。当其中之一达到 100 时,应用程序停止。

这是我的代码..

public class Board_Play1 extends Activity {

int d=0,a=0,b=0,turn=2;
Random random = new Random();

@Override
protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.board_play1);
    EditText diceno = (EditText) findViewById(R.id.editText1);
    EditText p1 = (EditText) findViewById(R.id.editText2);
    EditText p2 = (EditText) findViewById(R.id.editText3);

    diceno.setText(String.valueOf(d));  
    p1.setText(String.valueOf(a));
    p2.setText(String.valueOf(b));

    while(a!=100 && b!=100)
    {
        if(turn%2==0)
        {
            Button button = (Button) findViewById(R.id.button1);
            button.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View view) {
                    // TODO Auto-generated method stub
                    d=random.nextInt(6)+1;
                    EditText diceno = (EditText) findViewById(R.id.editText1);
                    diceno.setText(String.valueOf(d));

                }
            }); 
        }
        else
        {

            d=random.nextInt(6)+1;
            diceno.setText(String.valueOf(d));
        }

    if(turn%2==0)
            a+=d;
        else
            b+=d;

    if(a>100)
        a-=d;
    if(b>100)
        b-=d;


        p1.setText(String.valueOf(a));
        p2.setText(String.valueOf(b));
        turn++;
    }
    a=0;b=0;

}


}

当我运行这个..它就像..一切都完成了。 p2 editText 始终为 100,而 p1 会出现小于 100 的数字,而 diceno 的值为 100-p1.

但这不是我想问的主要问题。我添加了仅当用户单击该特定按钮时才运行的按钮和 onClickListener 方法。但这样的事情并没有发生。一旦我打开应用程序,它就会达到最大值。值(value)观和用户无关。

为什么会这样?帮助我做什么,以便我在 p1p2 中都以值 0 开始。

最佳答案

试试这个,我改变了你的代码

public class Board_Play1 extends Activity {

int d=0,a=0,b=0,turn=2;
Random random = new Random();

@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.board_play1);
EditText diceno = (EditText) findViewById(R.id.editText1);
EditText p1 = (EditText) findViewById(R.id.editText2);
EditText p2 = (EditText) findViewById(R.id.editText3);

diceno.setText(String.valueOf(d));  
p1.setText(String.valueOf(a));
p2.setText(String.valueOf(b));
EditText diceno = (EditText) findViewById(R.id.editText1);
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View view) {
                // TODO Auto-generated method stub
                d=random.nextInt(6)+1;
               diceno.setText(String.valueOf(d));

                if(turn%2==0)
                        a+=d;
                    else
                        b+=d;

                if(a>100)
                    a-=d;
                if(b>100)
                    b-=d;


                    p1.setText(String.valueOf(a));
                    p2.setText(String.valueOf(b));
                    turn++;
            }


        }); 
 }


}

更新:我将再添加一种方法来calculateDiceno。我想这会对你有帮助

public class Board_Play1 extends Activity {

int d=0,a=0,b=0,turn=2;
Random random = new Random();

@Override
protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.board_play1);
        EditText diceno = (EditText) findViewById(R.id.editText1);
        EditText p1 = (EditText) findViewById(R.id.editText2);
        EditText p2 = (EditText) findViewById(R.id.editText3);

        diceno.setText(String.valueOf(d));  
        p1.setText(String.valueOf(a));
        p2.setText(String.valueOf(b));
        EditText diceno = (EditText) findViewById(R.id.editText1);
        Button button = (Button) findViewById(R.id.button1);
        button.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View view) {
                        // This is user Turn
                        d=random.nextInt(6)+1;
                        diceno.setText(String.valueOf(d));
                        calculateDiceno();

                        //This is Application Trun. You may add some delay with progress bar

                        d=random.nextInt(6)+1;
                        diceno.setText(String.valueOf(d));
                        calculateDiceno();


                    }

        }); 


 }

    private void calculateDiceno(){
           if(turn%2==0)
                a+=d;
            else
                b+=d;

        if(a>100)
            a-=d;
        if(b>100)
            b-=d;


            p1.setText(String.valueOf(a));
            p2.setText(String.valueOf(b));
            turn++;
        }


}

更新 2: 不要使用 sleep()。使用 Handler 来处理一些延迟。

//This is Application Trun. You may add some delay with progress bar
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
          //This will execute after 3 sec
          d=random.nextInt(6)+1;
      diceno.setText(String.valueOf(d));
      calculateDiceno();
    }
}, 3000);  // 3000 means set 3 sec delay. 

关于java - 应用程序无需任何用户交互即可运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22752810/

相关文章:

java - 维护 GWT Web 应用程序的构建版本号

android - 为什么 HTML5 地理定位比 Android 上的本地定位慢?

php - 随机唯一数字,如 IP 地址 mysql

android - 单击按钮时未调用 onClick 方法

java - Hibernate 在我的数据库中随机生成 joda 时间列作为微小的 blob

java - 反序列化 POJO 列表,而不是一次反序列化单个 POJO

java - 切换 Activity 和使用全局数组时出现 NullPointerException

Android:如何使按钮标题居中?

android - 我的 2 个按钮在左下角,不知道为什么?

java - Lucene SpanNearQuery 与 java 中的复合词