我对编程很陌生,我创建了这个应用程序,当按下按钮时,它会说一个笑话,唯一的问题是当它到达最后一个文本时,应用程序崩溃,因为没有更多文本可供查看。我确信有一种方法可以在到达最后一个文本时再次从头开始启动数组,我只是不知道该怎么做。任何帮助将不胜感激!
这是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView line = (TextView) findViewById(R.id.line);
Button bl = (Button) findViewById(R.id.bl);
final String[] jokes = {
"joke 1", "joke 2" , "joke 3" , "joke 4"
};
bl.setOnClickListener(new View.OnClickListener() {
int rando = (int) (Math.random() * 4);
@Override
public void onClick(View v) {
rando++;
line.setText(jokes[rando]);
}
});
}
最佳答案
由于每次单击按钮时您都会获得一个随机数,因此您只需在访问数组之前不增加计数器即可:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView line = (TextView) findViewById(R.id.line);
Button bl = (Button) findViewById(R.id.bl);
final String[] jokes = {
"joke 1", "joke 2" , "joke 3" , "joke 4"
};
bl.setOnClickListener(new View.OnClickListener() {
int rando = (int) (Math.random() * 4);
@Override
public void onClick(View v) {
line.setText(jokes[rando]);
}
});
}
另一种选择是获取一个随机数一次,将其存储在字段中,然后在每次单击按钮时递增它:
int rando; // store in a field in your Activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView line = (TextView) findViewById(R.id.line);
Button bl = (Button) findViewById(R.id.bl);
final String[] jokes = {
"joke 1", "joke 2" , "joke 3" , "joke 4"
};
final int jokeCount = jokes.length;
rando = (int) (Math.random() * 4); // initialize only in onCreate
bl.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (++rando >= jokeCount) { // increment in onClick
rando = 0; // reset counter when needed
}
line.setText(jokes[rando]);
}
});
}
关于java - 当到达最后一个文本时重复数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27346852/