我有一个计数器列表,我想检查计数器的值是否为> 0: 你对我的代码有任何建议吗?
ArrayList<Integer> list = new ArrayList<Integer>();
int count1=0;
int count2=0;
for (int i = 0; i <x; i++)
{
if (action1)
{
count1++;
}
if (action2)
{
count2++;
}
}
list.add(count1);
list.add(count2);
我需要检查只有count1是!= 0
assertTrue(list>0); ???
答案 0 :(得分:2)
你忘了size()调用,它返回列表对象中元素的数量:
assertTrue(list.size() > 0)
修改强>
循环遍历列表并检查列表中的每个值,如下所示:
for(int y : list) {
assertTrue(y > 0);
}
答案 1 :(得分:1)
assetrts只有在通过将-ea传递给JVM argments启动java程序时才能工作。因此断言在正常情况下不起作用(除非直到jvm以-ea参数开头)。 java中的断言仅用于调试目的。在这种情况下,您应该考虑抛出IllegalStateException或其他一些适当的运行时异常。
答案 2 :(得分:0)
您的意思是列表大小是否大于0或列表中的计数器是否大于0?
对于前者,它将是:
list.size() > 0
如果是计数器,您只需检查已添加到列表中的计数器的值。
答案 3 :(得分:0)
由于您刚刚向list
添加了两个元素,因此无需检查其大小是否为>0
。
如果您想检查列表中的所有元素是>0
,那么您需要单独执行此操作:
for (int i : list) {
assertTrue(i > 0);
}
或使用Guava:
assertTrue(Collections2.filter(list, new Predicate() {
public boolean apply(Integer val) { return val > 0; }).count() > 0);