算法很美笔记整理(先导课2)

来自算法很美-蓝桥学院

一、任意范围内随机整数

  • 任意范围随机数 Math.random() 随机返回[0,1)之间的一个double浮点数
  • Math在lang包下 , 因此不必显示import
  • 公式为a + Math.random() * b
  • Math.random是[0,1) , 乘b-a就是[0,b-a), 再加上a就是[a,b),如果要取等, 就加1
import java.util.Scanner;

public class Hello {
    public static void main(String[] args) {
    

        while(true){
        //a加上Math.random()*(b-a)
            System.out.println(1 + (int) (Math.random() * (9)));
        }
        }
    }

二、Java中字符运算

  • java中字符运算, char型数据可以转换成任意一种数值类型, 将整数转换成char类型时, 只用该数据的低16位, 其余部分被忽略
  • 要一个浮点值转换成char型时,首先将浮点值转换成int型, 然后将这个整数值转换为char型
  • 还可以自加,自减进行输出
import java.util.Scanner;

public class Hello {
    public static void main(String[] args) {

        char a = 'a';
        System.out.println((char)0X0041);
        System.out.println((char)0XAB0041);
        System.out.println(++a);

        }
    }

运行结果如下:
A
A
b

  • 当一个char型数据转换成数值型时, 这个字符的Unicode码就被转换成某个特定的数值
import java.util.Scanner;

public class Hello {
    public static void main(String[] args) {

        System.out.println((int)'A');

        }
    }

  • 0~FFFF的任何一个十六进制正整数都可以隐式转换成字符型, 而不再次范围内的任何其他数值都必须显示转换
import java.util.Scanner;

public class Hello {
    public static void main(String[] args) {
        char ch = '\u0041'; //也可以这样
        char ch1 = 65;
        char ch2 = 0X0041;
        System.out.println((int)ch);
        System.out.println((int)ch2);
        }
    }

如果与数值类型数据进行运算,就会先转换成数数值类型进行计算,如果和字符串进行计算,会被转换成字符串

三、猜生日

这个是运用了二进制的技巧,因为生日只有0-31天,那么可以进行五次询问(具体看下面代码),将五个二进制位置的0或1全部列举清楚,然后等知道了这五个位置是0/1后,就知道了响应的数字

import java.util.Scanner;

public class Hello {
    public static void main(String[] args) {
        //猜生日
        Scanner sc = new Scanner(System.in);
        String s1 =
                "1 3 5 7\n" +
                "9 11 13 15\n" +
                "17 19 21 23\n" +
                "25 27 29 31\n";
        String s2 =
                "2 3 6 7\n" +
                "10 11 14 15\n" +
                "18 19 22 23\n" +
                "26 27 30 31\n";
        String s3 =
                "4 5 6 7\n" +
                "12 13 14 15\n" +
                "20 21 22 23\n" +
                "28 29 30 31\n";
        String s4 =
                 "8 9 10 11\n" +
                 "12 13 14 15\n" +
                 "24 25 26 27\n" +
                 "28 29 30 31\n";
        String s5 =
                "16 17 18 19\n" +
                "20 21 22 23\n" +
                "24 25 26 27\n" +
                "28 29 30 31\n";
        int a, a1, a2, a3, a4, a5;
        System.out.println("你的生日在这些数字里面吗?是输入1,否则输入0\n"+s1);
        a1 = sc.nextInt();
        System.out.println("你的生日在这些数字里面吗?是输入1,否则输入0\n"+s2);
        a2 = sc.nextInt();
        System.out.println("你的生日在这些数字里面吗?是输入1,否则输入0\n"+s3);
        a3 = sc.nextInt();
        System.out.println("你的生日在这些数字里面吗?是输入1,否则输入0\n"+s4);
        a4 = sc.nextInt();
        System.out.println("你的生日在这些数字里面吗?是输入1,否则输入0\n"+s5);
        a5 = sc.nextInt();
        int b = 2*2*2*2*a5 + 2*2*2*a4 + 2*2*a3 + 2*a4 + a5;
        System.out.println("你的生日是:"+b);
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值