Android/Java:检查arraylist是否为空,然后启动另一个活动
我试图建立一个测验程序,在这个程序中,一个人被问到一个问题,然后必须回答,这是一个两个人的游戏,他们只需通过所有的问题,游戏就结束了 到目前为止,我所做的是将数组(strings.xml文件中的数组)加载到arraylist中,然后从0到arraylist.size获取一个随机id,然后显示该字符串(问题),然后删除该随机id并获取一个新id的常规代码 但当我运行arraylist中的所有id时,程序崩溃,我的代码如下所示: 重要的是:Android/Java:检查arraylist是否为空,然后启动另一个活动,java,android,arrays,arraylist,Java,Android,Arrays,Arraylist,我试图建立一个测验程序,在这个程序中,一个人被问到一个问题,然后必须回答,这是一个两个人的游戏,他们只需通过所有的问题,游戏就结束了 到目前为止,我所做的是将数组(strings.xml文件中的数组)加载到arraylist中,然后从0到arraylist.size获取一个随机id,然后显示该字符串(问题),然后删除该随机id并获取一个新id的常规代码 但当我运行arraylist中的所有id时,程序崩溃,我的代码如下所示: 重要的是: public void gameCode() {
public void gameCode()
{
setContentView(R.layout.game);
if (mList == null)
{
String[] mQuestions = getResources().getStringArray(R.array.mQuestions);
mList = new ArrayList();
Collections.addAll(mList, mQuestions);
}
else if (mList.isEmpty())
{
m = (TextView)findViewById(R.id.textView1);
m.setText("You've run out of questions!");
}
if (wList == null)
{
String[] wQuestions = getResources().getStringArray(R.array.wQuestions);
wList = new ArrayList();
Collections.addAll(wList, wQuestions);
}
else if (wList.isEmpty())
{
w = (TextView)findViewById(R.id.textView1);
w.setText("You've run out of questions!");
}
//Takes a random ID from the arraylist
int rndm = generator.nextInt(mList.size());
int rndw = generator.nextInt(wList.size());
//Sets the Strings to a random number from one of the array lists
String qMan = (String) mList.get(rndm);
String qWoman = (String) wList.get(rndw);
if(i == 0)
{
//Defines that w is textView1 with the value of qWoman
w = (TextView)findViewById(R.id.textView1);
w.setText(qWoman);
wList.remove(rndw);
i = 1;
final Button buttonNext = (Button) findViewById(R.id.buttonNext);
buttonNext.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
gameCode();
}
});
}
else
{
m = (TextView)findViewById(R.id.textView1);
m.setText(qMan);
mList.remove(rndm);
i = 0;
final Button buttonNext = (Button) findViewById(R.id.buttonNext);
buttonNext.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
gameCode();
}
});
}
}
}
源代码中有来自pastebin的注释。现在我只需要将文本更改为“You's run of questions”使用CollectionUtils.isEmpty(),它是空安全的您正在检查这两个数组是否为空,但当它们为空时,您没有短路逻辑的其余部分
如果mList和wList为空,您应该绕过该方法的其余部分,或者至少检查
mList.size()>0
和wList.size()>0
,然后再尝试从每个数组中获取下一个随机问题。程序运行正常,当我用完arraylist中的项时崩溃。对。因此,当数组列表中没有更多项时,您仍在执行代码,该代码尝试随机选择一个问题并将问题文本设置到视图中。举个例子:假设wList中有0个条目,i==0,那么随机数生成器将返回0,您尝试执行wList.get(rdmn)的操作将失败。谢谢。。我在随机生成器等之前添加了一个if语句,它就像一个charmcode
if(mList.size()>0&&wList.size()>0)我应该在else if语句中使用它吗?