Java实操2

水仙花数:

public class NarcissusNumber {
    public static void main(String[] args){
       for (int i=100;i<=999;i++){
           int a = i/100;//获取百位
           int b = (i%100)/10;//获取十位
           int c = i%10;//获取个位
           if(i==a*a*a+b*b*b+c*c*c){
               System.out.println(i);
           }
       }
    }
}
判断奇数偶数:

public class  ImparityCheck{
    public static void main(String[] args) {
        /*
         * 可以通过判断余数是否为0来判断“奇数”和“偶数”。
         * 不能用余数是否为1来判断“奇数”和“偶数”,因为还有负数。
         */
        int a =-2147483647;
        String str=a%2==0?"偶数":"奇数";
        String str2=a%2!=0?"奇数":"偶数";
    
        System.out.println(str+str2);
        
        /*
         * 通过位运算来判断“奇数”和“偶数”。 
         * 因为当数值存储为二进制时,判断它是奇数还是偶数只需要看最低位。
         * &运算特点是,有0即0,当我们用变量a&1时,则一定会把最低位之前的所有位全部变成0。
         * 这个时候,如果变量a是偶数,那么最低位为0,则(a&1)最终结果为0。
         * 如果变量a是奇数,那么最低位为1,则(a&1)最终结果为1。
         * 变量a&1的结果,有且仅有以上两种情况。
         */
        String str3=(a&1)==1?"奇数":"偶数";
        String str4=(a&1)!=1?"偶数":"奇数";
        String str5=(a&1)==0?"偶数":"奇数";
        String str6=(a&1)!=0?"奇数":"偶数";
        String str7=(a&1)<1?"偶数":"奇数";
        String str8=(a&1)>0?"奇数":"偶数";
        System.out.println(str3+str4+str5+str6+str7+str8);
        
        
        /*
         * int类型是32位2进制,最高位为符号位,我们可以通过按位左位移运算来把变量a的最低位移到最高位,
         * 然后通过判断变量a按位左位移后的数值是否是负数来判断一开始变量a的最低位是1还是0。
         * 也就是int类型按位左位移31位即可把最低位移到最高位。
         */
        String str9=a<<31<0?"奇数":"偶数";
        System.out.println(str9);
        /*
         * 貌似位运算和比较运算没有优先级顺序,所以从左往右算。
         * 也可以写成String str9=(a<<31)<0?"奇数":"偶数";
         */
        
        String str10=(((a>>>1)<<1)==a)?"偶数":"奇数";//无符号右位移
        String str11=(((a>>>1)<<1)!=a)?"奇数":"偶数";
        System.out.println(str10+str11);
        /*
         * 当将变量a进行向右移1位时,则二进制数最低位溢出。
         * 当再将它向左移1位时,则此时的最低位补0.
         * 此时得到的值如果和原来的变量a的值相等,则变量a本身二进制最低位为0,则为偶数
         * 如果不相等,则变量a本身二进制最低位为1,则为奇数
         */
        String str12=(((a>>1)<<1)==a)?"偶数":"奇数";
        String str13=(((a>>1)<<1)!=a)?"奇数":"偶数";
        System.out.println(str12+str13);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值