我正在为Android平台做一个简单的游戏。我有25个对象,我称之为Circle。每个Circle对象都有一个字段color
,其中包含一个代表
所以每种颜色都有五个物体。
每个对象也有一个我称之为status
的布尔值,并且在开头设置为false。但是在游戏过程中,一些Circle对象status
被设置为true。
所有25个对象都存储在ArrayList
中,我称之为listOfCircles
。
我的问题是,如何检查设置为true的所有Circle对象是否具有相同类型的颜色代码?假设三个Circle对象设置为true,每个对象color
为3,但也可能是这三个Circle对象的值可能为1而另外两个为4,那么它不是有效的比赛。
一些帮助会很好!
答案 0 :(得分:3)
要检查特定值是否存在多次,您可以使用以下内容:
if ( (Collections.frequency(portList, x)) > 1 ){
System.out.println(x + " is in portList more than once ");
}
答案 1 :(得分:2)
您可以使用类似的内容来查看特定值的次数:
System.out.println(Collections.frequency(portList, 1));
//可以有任何整数,我放1让你可以理解
答案 2 :(得分:1)
它的工作原理如下。它遍历圆圈列表并查找具有status = true
的第一个圆圈。当它找到它时,它会在int color
中保存该圆圈的颜色。在此后的每个步骤中,如果找到一个活动圈(使用status = true
,它会检查该圈子的颜色是否与原始圈子的颜色匹配。
如果没有则表示并非所有活动圆都具有相同的颜色。由于flag
最初设置为true
,因此单个false
足以确定并非所有活动圆都具有相同的颜色。
如果找不到false
,则表示如果所有活动圆圈的颜色与第一个活动圆圈的颜色相同,则flag
仍为true
。
List<Circle> listOfCircles = new ArrayList<Circle>();
boolean flag = true;
int color;
for (Circle currentCircle: listOfCircles) {
if (currentCircle.status == true) {
if (color == null) {
color = currentCircle.color;
} else {
if (color != currentCircle.color) {
flag = false;
};
};
};
};
// flag now holds true or false according to your needs.
答案 3 :(得分:1)
如果arraylist的第一个元素的频率等于arraylist的大小,则所有项目都相等,否则不相等
if ((Collections.frequency(list, list.get(0))) == list.size() ){
System.out.println("string same");
}
else{
System.out.println("string different");
}
答案 4 :(得分:0)
一个简单的for循环就足够了,因为你只检查一种颜色:
boolean isValid (ArrayList <Circle> circles) {
int color = -1;
for (Circle c : circles) {
if (c.status) {
if (color < 0)
color = c.color;
if (color != c.color)
return false;
}
}
return true;
}
答案 5 :(得分:0)
将isValid标志设置为true,将颜色标志设置为-1。然后遍历数组,如果一个对象设置为true,则将颜色设置为该数字(确保它只设置一次)然后进入另一个if语句。在第二个if语句中,如果颜色不匹配,则设置为false并且为false。
否则此循环将以true结束,这是一个有效的设置。
答案 6 :(得分:0)
public boolean mymeth(){
int firstCol = 0;
for(int i = 0;listOfObject.length(); i++){
// determine the color of the first element whose status is set
if(listOfObject.get(i).status && firstCol == 0){
firstCol = listOfObject.get(i).color;
}
//if that value is not equal to next element who is set then return false;
else if(listOfObject.get(i).status && firstCol != 0){
if(firstCol != listOfObject.get(i).color)
return false;
}
}
return true;
}