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