Java HashSet里的set.size()是什么意思
Setset=newHashSet();set.add(a%10);set.add(a/10%10);set.add(a/100);set.add(b%10);set.a...
Set set = new HashSet();
set.add(a%10);
set.add(a/10%10);
set.add(a/100);
set.add(b%10);
set.add(b/10%10);
set.add(b/100);
set.add(c%10);
set.add(c/10%10);
set.add(c/100);
set.add(0);
if(set.size()==10){
System.out.println(a+" "+b+" "+c);
}
这样就求出1:2:3的数了,为什么? 展开
set.add(a%10);
set.add(a/10%10);
set.add(a/100);
set.add(b%10);
set.add(b/10%10);
set.add(b/100);
set.add(c%10);
set.add(c/10%10);
set.add(c/100);
set.add(0);
if(set.size()==10){
System.out.println(a+" "+b+" "+c);
}
这样就求出1:2:3的数了,为什么? 展开
2个回答
展开全部
set.size()表示的是这个集合中对象的个数。没看明白“这样就求出1:2:3的数了,为什么?”这句话是什么意思
追问
这题:
题目描述
将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成 1:2:3的比例,试求出所有满足条件的三个三位数。 例如:三个三位数192,384,576满足以上条件。
输入
此题没有输入数据
输出
输出所有符合条件的三位数,每一行为一组答案,每一组为三个数,每个数之间为一个空格,每一行的最后一个数据之后没有空格。注意输出的时候要求按照由小到大的顺序输出。
追答
哦,我明白了,完整的程序是不是应该是这样?
import java.util.HashSet;import java.util.Set;
public class testSet {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int a=1;a<1000/3;a++){
int b=2*a;
int c=3*a;
Set set = new HashSet();
set.add(a%10);
set.add(a/10%10);
set.add(a/100);
set.add(b%10);
set.add(b/10%10);
set.add(b/100);
set.add(c%10);
set.add(c/10%10);
set.add(c/100);
set.add(0);
if(set.size()==10){
System.out.println(a+" "+b+" "+c);
}
}
}
}
是这样的,a是个3位数,b是a*2,c是a*3。上面几个取余的运算就是求出个位十位百位的数字,并加入HashSet中,由于HashSet是不能有重复的对象的,所以如果条件满足的时候,应该有九个对象,最后再 set.add(0); 就有10个对象了,当这个集合有10个对象的时候就输出满足条件的3个3位数。为什么不能去掉 set.add(0); ,把if判断那里改成9呢?因为,要求a也是3位数,如果a是两位数,那么除以100再取余就是0了,这个时候,集合里也是9个数字,包括了0,但是这个两位数的a 是不满足条件的,所以再加入一个对象 set.add(0);,这个对象实际上没加进去,因为集合里已经有0了,所以对象个数还是9个。
这种方法很巧妙,我也学到了,呵呵。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询