显示两个随机数并计算奇数轮和偶数轮的得分。当其中之一达到 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)观和用户无关。
为什么会这样?帮助我做什么,以便我在 p1
和 p2
中都以值 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/