Java Random类、Scanner类、BigInteger类、 BigDecimal类简介

Ramdom

使用步骤:
1. 导入包
import java.util.Random ;
2. 创建对象
Random r = new Random() ;
3. 产生随机数
int num = r.nextInt(10) ;
解释: 10 代表的是一个范围,如果括号写 10 ,产生的随机数就是 0( 包括 )-9( 包括 ) ,括号写 20 ,参数的随
机数则是 0( 包括 )-19( 包括 )

 

使用 Random 类,完成生成 3 10 以内的随机整数的操作,代码如下:
package wensong.OOP;

import java.util.Random;
public class TestRandom {
    public static void main(String[] args) {
        //创建键盘录入数据的对象
        Random r = new Random();
        for (int i = 0; i < 3; i++) {
            //随机生成一个数据
            int num = r.nextInt();
            System.out.println("num: " + num);
        }
    }

}

结果(每次结果可能都不一样,因为是随机数):

num: -1921646718
num: -1082287408
num: 1298147894

Scanner

创建对象
格式: 数据类型 变量名 = new 数据类型 ( 参数列表 );
            Scanner sc = new Scanner ( System . in );
调用方法
格式: 变量名 . 方法名 ();
举例: int i = sc . nextInt (); // 接收一个键盘录入的整数
示例
获取键盘录入的整数  
Scanner 类练习
在获取三个女婿中的最高收入案例中,收入数据如果由键盘录入,该怎样实现呢?
package wensong.OOP;
import java.util.Scanner;

public class TestScanner {
    public static void main(String[] args) {
        //收入未知,采用键盘录入实现。首先导包,然后创建对象。
        Scanner sc = new Scanner(System.in);
        //键盘录入三个女婿的收入分别赋值给三个变量
        System.out.println("请输入第一个女婿的收入:");
        int height1 = sc.nextInt();
        System.out.println("请输入第二个女婿的收入:");
        int height2 = sc.nextInt();
        System.out.println("请输入第三个女婿的收入:");
        int height3 = sc.nextInt();
        //用三元运算符获取前两个女婿的较高收入值,并用临时收入变量保存起来
        int tempHeight = height1 > height2 ? height1 : height2;
        //用三元运算符获取临时收入值和第三个女婿收入较高值,并用最大收入变量保存
        int maxHeight = tempHeight > height3 ? tempHeight : height3;
        //输出结果
        System.out.println("这三个女婿中收入最高的是:" + maxHeight +"万RMB");
    }
}
猜数字罚酒
需求:程序自动生成一个 1-100 之间的数字,使用程序实现猜出这个数字是多少,谁猜对了谁喝酒。
效果:
如果猜的数字比真实数字大,提示你猜的数据大了
如果猜的数字比真实数字小,提示你猜的数据小了
如果猜的数字与真实数字相等,提示恭喜你猜中了,杯子里的酒干了吧嘿嘿
代码实现
 
package wensong.OOP;

import java.util.Random;
import java.util.Scanner;

public class GuestNumber {
    public static void main(String[] args) {
        //要完成猜数字游戏,首先要有一个要猜的数字,使用随机数生成,范围1到100
        Random r = new Random();
        //r.nextInt(100)的话是0到99,所以要加1
        int num = r.nextInt(100)+1;
        while(true){
            //键盘输入要猜的数字
            Scanner sc = new Scanner(System.in);
            System.out.println("please enter number in your mind");
            int number = sc.nextInt();
            //比较两个数的大小,用分支语句
            if(num==number){
                System.out.println("恭喜你猜中了,杯子里的酒干了吧嘿嘿");
                break;
            }else if(num>number){
                System.out.println("你猜的太小了哈哈");
            }else{
                System.out.println("你猜的太大了哈哈哈");
            }

        }
    }
}

BigInteger

概述:java.math.BigInteger 类,不可变的任意精度的整数。如果运算中,数据的范围超过了long类型后,可以使用BigInteger类实现,该类的计算整数是不限制长度的。

构造方法 :BigInteger(String value) 将 BigInteger 的十进制字符串表示形式转换为 BigInteger 。超过 long 类型的范围,已经
不能称为数字了,因此构造方法中采用字符串的形式来表示超大整数,将超大整数封装成 BigInteger 对象。
 
常用方法:
方法名含义
add(BigInteger value)返回其值为(this + val)的BigInteger,超大整数加法运算
subtract(BigInteger value)返回值为(this + val)的BigInteger,超大整数减法运算
multiply....
divide....除不尽取整数部分

 

package wensong.OOP;

import java.math.BigInteger;

public class TestBigInteger {
    public static void main(String[] args) {
        BigInteger big1 = new BigInteger("32793279238388132812823");
        BigInteger big2 = new BigInteger("89239887379127311424");
        //加法
        BigInteger add = big1.add(big2);
        System.out.println(add);
        //减法
        BigInteger sub = big1.subtract(big2);
        System.out.println(sub);
        //乘法
        BigInteger mul = big1.multiply(big2);
        System.out.println(mul);
        //除法
        BigInteger div = big1.divide(big2);
        System.out.println(div);
    }
}


结果:

32882519125767260124247
32704039351009005501399
2926468546026030824783887835714018621589952
367

BigDecimal

概述
java.math.BigDecimal 类,不可变的、任意精度的有符号十进制数。该类可以实现超大浮点数据的精确运算。
构造方法
BigDecimal(String value) BigDecimal 的十进制字符串表示形式转换为 BigDecimal
常用方法
BigDecimal 类的加法减法乘法与 BigInteger 类相同,不在重复。
除法计算
BigDecimal 类实现精确的浮点数除法运算,如果两个浮点除法计算后是无限循环,那么就会抛出异常。
除法运算方法:
BigDecimal divide(BigDecimal divisor,int scale,int roundingMode)
divesor :此 BigDecimal 要除以的值。
scale :保留的位数
roundingMode :舍入方式
舍入方式: BigDecimal 类提供静态的成员变量来表示舍入的方式
BigDecimal.ROUND_UP 向上加 1
BigDecimal.ROUND_DOWN 直接舍去,最后一位小数加.5也能实现四舍五入。
BigDecimal.ROUND_HALF_UP 四舍五入。
package wensong.OOP;

import java.math.BigDecimal;

public class TestBigDecimal {
    public static void main(String[] args) {
        BigDecimal bid1 = new BigDecimal("2.45435345345345345435345342");
        BigDecimal bid2 = new BigDecimal("42331.2831201238928289832988288");
        // +
        BigDecimal add = bid1.add(bid2);
        System.out.println(add);
        // -
        BigDecimal sub = bid1.subtract(bid2);
        System.out.println(sub);
        // *
        BigDecimal mul = bid1.multiply(bid2);
        System.out.println(mul);
        // /
        /*舍入方式:BigDecimal类提供静态的成员变量来表示舍入的方式
          BigDecimal.ROUND_UP 向上加1。
          BigDecimal.ROUND_DOWN 直接舍去。
          BigDecimal.ROUND_HALF_UP 四舍五入*/
        BigDecimal div = bid1.divide(bid2,16,BigDecimal.ROUND_HALF_UP);
        System.out.println(div);
    }
}

结果:

42333.73747357734628243765228222
-42328.82876667043937552894537538
103895.930914991956710651310862820504752751136769121354496
0.0000579796611997

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值