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的数了,为什么?
展开
 我来答
hdparrot
推荐于2018-05-11 · TA获得超过2403个赞
知道小有建树答主
回答量:1385
采纳率:0%
帮助的人:1145万
展开全部
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个。
这种方法很巧妙,我也学到了,呵呵。
永远爱上寂寞
2012-11-10
知道答主
回答量:11
采纳率:0%
帮助的人:4.1万
展开全部
这只是一些数的运算 除以10 和对10取模 都是为了得到一个数的前面和后面的数字

例如: 56/10==5 56%10==6
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式