注册 登录
编程论坛 JAVA论坛

请教一个入门类的简单问题

shiryaku 发布于 2015-11-04 06:01, 392 次点击
刚开始学,问题可能有点简单。。。
我想抽取20以内组成三角形的边长,下面是书上的代码
public class test5{
    public static void main(String[] args){
        int a,b,c,n;
        n=20;
        System.out.println("a\tb\tc");
        for(a=1;a<=n;a++){
            for(b=1;b<=a;b++){
                for(c=b;c<=a;c++){
                    if (a*a==b*b+c*c)
                    System.out.println(a+"\t"+b+"\t"+c);
                }
            }
        }
    }   
}
我想问问,第3个for句处,为什么要写成c=b,就可以把重复的都去掉,我之前自己做的时候写的是b=1,结果出来一大堆重复的比如543和534。。。
这是为什么?
c=b是什么意思?
还望告知~~~
2 回复
#2
calix2015-11-04 12:21
c=b可以保证c>=b,5 4 3中c=3,b=4,这种组合会被过滤掉,后面同理
如果c从1开始循环
5 4 3
10 8 6
...
都是满足条件的


#3
shiryaku2015-11-04 13:21
原来如此,明白了。
多谢!!!
1