黑马程序员技术交流社区

标题: 来个练习,大家来指点下 [打印本页]

作者: 黑马—王宁    时间: 2012-2-29 14:51
标题: 来个练习,大家来指点下
要求两个两位数相乘,得到结果是一个三位数,这个三位数每一位数(个位,十位,百位)都必须是奇数,请打出符合要求的结果。打出形式: **x**=***   

作者: 黑马—王宁    时间: 2012-2-29 14:55
1.定义二个两位数,并*的值赋给一个变量
2.判断这个数是不是在要求的区间。
3.确定在区间后,在判断这个三位数的前两位%2是否==1
4.以述成立,再判断百位数%2是否==1
5.以上都成立,则输出结果
class sanWeiShu{
public static void main(String[] args)
{
for(int x=11;x<=99;x=x+2)
    {for(int y=11;y<=99;y=y+2)
         {
          int sum=x*y;
          if(sum%2==1&&sum/10%2==1&&sum/100%2==1&&sum<=999&&sum>100)
             {
               System.out.print(x+"X"+y+"="+sum+"/t" );
              }
          }
     }

}

}
作者: 黑马—王宁    时间: 2012-2-29 14:57
有没有办法把两个数相乘的结果相同的去掉一个呢?????

作者: 段玉超    时间: 2012-2-29 15:09
本帖最后由 段玉超 于 2012-2-29 15:16 编辑

去除重复的方法其实非常简单  可以使用 java 的java.util.HashSet
思路:
   1,创建一个hashset 实例,
   2,将计算结果放入hashset中
   3,从hashset中读出结果即可
但是hashset是无序的,为了存储两个因数,可以定义一个结构或者类,不过定义的时候一定要注意,记得重写equals 和hashCode。

作者: 沈样    时间: 2012-2-29 16:46
这可以在论坛里找一下应该都有的
作者: dangfei    时间: 2012-2-29 19:55
public static void main(String args[]){             
             ArrayList list=new ArrayList();//定义集合存储把相乘的结果
             for(int x=11;x<=99;x=x+2)
                {for(int y=11;y<=99;y=y+2)
                     {
                      int sum=x*y;
                      if(sum%2==1&&sum/10%2==1&&sum/100%2==1&&sum<=999&&sum>100)
                         {
                               if(!list.contains(sum))//判断现有集合中是否存在乘积
                               {
                                System.out.println(x+"X"+y+"="+sum );
                                list.add(sum);            //若不存在则放入集合                    
                               }                                                            
                         }
                      }
                 }
             
             }
//做了一些改动,加入了一个List存放乘积,后再存入乘积时判断集合中是否已存在此乘积。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2