ThinkInJava学习笔记--2 + 4位吸血鬼数

一.四位数的吸血鬼数的实现:

import java.util.Arrays;
public class test1 {
    public static void main(String[] args){
        System.out.println("总数:"+Judge(1000,9999));
    }
    /*
    * @param begin 吸血鬼数范围集合 下限
    * @param last  吸血鬼数范围集合 上限
    */
    public static int Judge(int begin,int last){
        int Sum = 0;
        int big_Border = (int) Math.sqrt(last+1) - 1;//吸血鬼数的因数集合 上范围
        int little_Border = (big_Border + 1)/10;     //吸血鬼数的因数集合 下范围
        for(int i = begin;i<last;i++){
            for(int j=little_Border;j <= big_Border;j++){
                boolean b = j%10!=0 || (i/j)%10!=0;//两个因数不能同时以0结尾
                //整除 && 两个因数都只能是两位数 && b
                if( (i%j==0) && (i/j <= big_Border) && b ){
                    //将两个因数拼接成字符串,并得到byte数组
                    byte[] alls = (j+""+(i/j)).getBytes();
                    byte[] nums = (i+"").getBytes();//将被除数转为byte数组
                    Arrays.sort(alls);//排序
                    Arrays.sort(nums);
                    //排序后转为字符串,从而得知两个因数是否由完全由被除数构成
                    if(Arrays.toString(alls).equals(Arrays.toString(nums))){
                        System.out.println(j +" * "+i/j+" = "+i);
                        Sum++;
                        break;
                    }
                }
            }
        }
        return Sum;
    }
}

执行结果如下1000~~9999之间一共有七个吸血鬼数:

 

二.知识点、常用方法:

1.取平方根Math.sqrt();

2.取多次幂Math.pow(NumA,NumB);

3.三目运算:Value v_1 = (bool表达式)?value1:value2;

4.java基本类型自动转换:窄的类型可以自动转为宽的类型(int可以转为long),但是从long到int必须强制转换,并且会伴随着信息的丢失;

5.随机数:Random random = new Random(int 随机数因子);

           random.nextInt(Max_int);         //0  ~~~  (Max_int-1)

6.break和continue:

break 跳出整个循环;continue跳过本次循环剩余的操作,直接进入下一次循环;

break + label:跳出label标签标记的那个循环(可以实现跳出多重循环)

continue + label: 跳过label标签标记的循环的本次循环剩余代码,直接进入该被标记循环的下一轮循环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值