Random型
实例化一个Random类对象可以创建一个随机数生成器。
语法:
Random r =new Random();
.
其中,r是指Random对象。Random类提供了生成各种数据类型随机数的方法。
Random提供的方法:
例:
package Usual_Class;
import java.util.Random;
import java.util.Scanner;
public class demo4 {
public static void main(String[] args)
{
System.out.println("**********模拟微信抢红包***************\n");
Scanner sc = new Scanner(System.in);
System.out.println("请输入要装入红包的总金额(元):");
double total = sc.nextDouble(); //输入红包的总金额
System.out.println("请输入红包的个数(个):");
int bagsnum = sc.nextInt(); //输入红包的个数
double min = 0.01;
Random random = new Random(); //创建随机数对象
if(total/bagsnum == 0.01) {
for (int i = 1; i < bagsnum; i++)
{
double money = min; // 让每个红包金额为最小金额
total -= money; // 红包中剩余金额
System.out.println("第" + i + "个红包:" + String.format("%.2f", money) + "元");
}
} else if (total / bagsnum < 0.01) {
// 当红包平均金额不足0.01时
System.out.println("要保证每个人都能分到一分钱哟!");
return;
} else {
for (int i = 1; i < bagsnum; i++)
{
/*
* 本次红包可用最大金额=
* 可分配金额-(红包总数-已发出的红包数)*红包的最小金额
*/
double max = total - (bagsnum -i) * min;
double bound = max - min;// 设置随机金额取值范围
/*
* 根据随机金额的取值范围,随机生成红包金额。由nextInt(int bound)
* 只能用整型作参数,所以先将bound乘100(小数点向后移两位)
* 获取一个整数后,将这个整数除100(小数点向左移两位) 并转换成与金额相同的浮点类型
*/
double safe = (double)random.nextInt((int) (bound * 100) / 100);
double money = safe + min; // 最后加上红包的最小金额,以防safe出现0值
total = total - money;// 替换total值
System.out.println();
System.out.println("第" + i + "个红包:" + String.format("%.2f", money) + "元");
}
}
// 输出剩余金额
System.out.println("第" + bagsnum + "个红包:" + String.format("%.2f", total) + "元");
}
}
Date类
:
Date类主要用于操作日期和时间。使用Date类时,需要先创建Date类对象。
Date类的构造方法:
例:long time =System.currentTimeMillis();
.
Date date = new Date(timeMillis);
.
Date类的常用方法:
DateFormat类:
按照指定格式对日期或者时间进行格式化。DateFormat提供4种默认的格式化风格,即SHORT、MEDIUM、LONG和FULL。其中:
SHORT
:完全为数字,如12.13.52或3:30PM
MEDIUM
:较长,如Jan 12,1952;
LONG
:更长,如:January 12,1952;
FULL
:完全指定。
此外:使用DateFormat类还可以自定义日期、时间的格式。若要自定义日期、时间的格式,首先需要创建DateFormat类对象。由于DateFormat类是抽象类,因此需要使用DateFormat类的静态方法getDateInstance()创建DateFormat类对象。
语法:DateFormat df = DateFormat.getDateInstance();
.
DateFormat类的常用方法及说明:
常用的格式字符串:
例:
package Usual_Class;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class demo5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 创建日期
Date date = new Date();
// 创建不同的日期格式
DateFormat df1 = DateFormat.getInstance();
DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss EE");
DateFormat df3 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒 EE");
DateFormat df4 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss EE", Locale.CHINA);
DateFormat df5 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss EE", Locale.US);
DateFormat df6 = new SimpleDateFormat("yyyy-MM-dd");
DateFormat df7 = new SimpleDateFormat("yyyy年MM月dd日");
// 将日期按照不同格式进行输出
System.out.println("按照Java默认的日期格式: " + df1.format(date));
System.out.println();
System.out.println("按指定格式yyyy-MM-dd hh:mm:ss EE:系统默认区域 " + df2.format(date));
System.out.println();
System.out.println("yyyy年MM月dd日 hh时mm分ss秒 EE 系统默认区域 " + df3.format(date));
System.out.println();
System.out.println("按指定格式yyyy-MM-dd hh:mm:ss EE:中国区域 " + df4.format(date));
System.out.println();
System.out.println("按指定格式yyyy-MM-dd hh:mm:ss EE:美国区域 " + df5.format(date));
System.out.println();
System.out.println("按指定格式yyyy-MM-dd 系统默认区域 " + df6.format(date));
System.out.println();
System.out.println("按指定格式yyyy年MM月dd日 系统默认区域 " + df7.format(date));
}
}