Calendar类
计算2012-9-01和2016-07-01之间相隔的天数
import java.util.*;
public class exam {
public static void main(String[] args) {
Calendar calendar=Calendar.getInstance();
calendar.setTime(new Date());
int year=calendar.get(Calendar.YEAR);
int month=calendar.get(Calendar.MONTH)+1;
int day=calendar.get(Calendar.DAY_OF_MONTH);
int hour=calendar.get(Calendar.HOUR_OF_DAY);
int minute =calendar.get(Calendar.MINUTE);
int second=calendar.get(Calendar.SECOND);
System.out.println("现在的时间是:");
System.out.println(" "+year+"年"+month+"月"+day+"日");
System.out.println(" "+hour+"时"+minute+"分"+second+"秒");
int y=2012,m=9,d=1;
calendar.set(y, m-1,d); //将日历翻到2012年9月1日,注意8表示9月
long time1=calendar.getTimeInMillis();
y=2016;
m=7;
day=1;
calendar.set(y, m-1, d);//将日历翻到2016年7月1日
long time2=calendar.getTimeInMillis();
long subDay=(time2-time1)/(1000*60*60*24);
System.out.println(""+new Date(time2));
System.out.println("与"+new Date(time1));
System.out.println("相隔"+subDay+"天");
}
}
import java.util.Calendar;;
public class CalendarBean {
int year=0,month=0;
public void SetYear(int year) {
this.year=year;
}
public void SetMonth(int month) {
this.month=month;
}
public String [] getCalendar() {
String [] a=new String[42];
Calendar rill=Calendar.getInstance();
rill.set(year, month-1,1);
int weekDay=rill.get(Calendar.DAY_OF_WEEK)-1;
int day=0;
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
day=31;
if(month==4||month==6||month==9||month==11)
day=30;
if(month==2)
if(((year%4==0)&&(year%100!=0))||(year%400==0))
day=29;
else
day=28;
for(int i=0;i<weekDay;i++)
a[i]=" ";
for(int i=weekDay,n=1;i<weekDay+day;i++){
a[i]=String.valueOf(n);
n++;
}
for(int i=weekDay+day;i<a.length;i++)
a[i]=" ";
return a;
}
}
public class exam {
public static void main(String[] args) {
CalendarBean cb=new CalendarBean();
cb.SetYear(2022);
cb.SetMonth(6);
String [] a=cb.getCalendar();
char [] str="日一二三四五六".toCharArray();
for(char c:str){
System.out.printf("%7c",c);
}
for(int i=0;i<a.length;i++){
if(i%7==0)
System.out.println(" ");
System.out.printf("%4s",a[i]);
}
}
}
Random类
演示从1~100之间随机得到的数
import java.util.*;
public class GetRandomNumber {
public static int [] getRandomNumber(int max,int amount) {
//1至max之间的amount个不同的随机整数(包括1和max)
int [] randomNumber=new int[amount];
int index=0;
randomNumber[0]=-1;
Random random=new Random();
while(index<amount){
int number=random.nextInt(max)+1;
boolean isInArrays=false;
for(int m:randomNumber){ //m依次取数组randomNumber元素的值
if(m==number)
isInArrays=true;
}
if(isInArrays==false){
//如果number不在数组randomNumber中
randomNumber[index]=number;
index++;
}
}
return randomNumber;
}
}
public class exam {
public static void main(String[] args) {
int [] a=GetRandomNumber.getRandomNumber(100, 6);
System.out.println(java.util.Arrays.toString(a));
}
}
格式化浮点数
import java.text.*;
public class exam {
public static void main(String[] args) {
int n=123456789;
System.out.println("整数"+n+"按千分组(带正号)");
String s=String.format("%,+d", n);
System.out.println(s);
double number=98765.6789;
System.out.println(number+"格式化为整数7位,小数3位");
s=String.format("%011.3f", number);
System.out.println(s);
}
}
Class类
import java.util.Date;
class Rect{
double width,height,area;
public double getArea() {
area=height*width;
return area;
}
}
public class exam {
public static void main(String[] args) {
try {
Class cs=Class.forName("Rect");
Rect rect=(Rect)cs.newInstance();
rect.width=100;
rect.height=200;
System.out.println("rect的面积"+rect.getArea());
cs=Class.forName("java.util.Date");
Date date=(Date)cs.newInstance();
System.out.println(String.format("%tF %<tT %<tA", date));
} catch (Exception e) {
System.out.println(e.toString());
}
}
}
Console类
import java.io.Console;
public class exam {
public static void main(String[] args) {
boolean success=false;
int count=0;
Console cons;
char [] passwd;
cons=System.console();
while(true){
System.out.print("输入密码");
passwd=cons.readPassword();
count++;
String password=new String(passwd);
if(password.equals("I love this game")){
success=true;
System.out.println("第"+count+"次密码正确!");
break;
}
else{
System.out.println("第"+count+"次密码"+password+"不正确");
}
if(count==3){
System.out.println("您"+count+"次输入的密码都不正确");
System.exit(0);
}
}
if(success){
System.out.println("你好,欢迎您");
}
}
}
模拟抢红包
public abstract class RedEnvelope {
public double remainMoney; //红包当前金额
public int remainPeople; //当前参与抢红包的人数
public double money; //当前用户抢到的金额
public abstract double giveMoney(); //抽象方法,具体怎么抢红包由子类完成
}
import java.util.Random;
public class RandomRedEnvelope extends RedEnvelope{ //随机红包
double minMoney; //可以抢到的最小金额
int integerRemainMoney; //红包中的钱用分表示
int randomMoney; //给用户抢的钱
Random random;
RandomRedEnvelope(double remainMoney,int remainPeople){
random=new Random();
minMoney=0.01; //minMoney的值是0.01,保证用户至少能抢到0.01元
this.remainMoney=remainMoney;
this.remainPeople=remainPeople;
integerRemainMoney=(int)(remainMoney*100);//把钱用分表示
if((integerRemainMoney)<remainPeople*(int)(minMoney*100)){
integerRemainMoney=remainPeople*(int)(minMoney*100);
this.remainMoney=(double)integerRemainMoney;
}
}
public double giveMoney(){
if(remainPeople<=0){
return 0;
}
if(remainPeople==1){
money=remainMoney;
remainPeople--;
return money;
}
randomMoney=random.nextInt(integerRemainMoney);
//该金额randomMoney在[0,integerRemainMoney)区间内
if(randomMoney<(int)(minMoney*100)){
randomMoney=(int)(minMoney*100); //保证用户至至少能抢到1分
}
int leftOtherPeopleMoney=integerRemainMoney-randomMoney;
//leftOtherPeopleMoney是当前用户留给其他余人的金额(单位是分)
int otherPeopleNeedMoney=(remainPeople-1)*(int)(minMoney*100);
//otherPeopleNeedMoney是保证其他人还能继续抢的最少金额(单位是分)
if(leftOtherPeopleMoney<otherPeopleNeedMoney){
randomMoney-=(otherPeopleNeedMoney-leftOtherPeopleMoney);
}
integerRemainMoney=integerRemainMoney-randomMoney;
remainMoney=(double)(integerRemainMoney/100.0); //钱的单位转成元
remainPeople--;
money=(double)(randomMoney/100.0);
return money; //返回用户抢到的钱(单位是元)
}
}
public class exam {
public static void main(String[] args) {
RedEnvelope redEnvelope=new RandomRedEnvelope(5.20,6);
System.out.printf("以下用循环输出%d个人抢%.2f元的随机红包:\n",redEnvelope.remainPeople,redEnvelope.remainMoney);
showProcess(redEnvelope);
}
public static void showProcess(RedEnvelope redEnvelope) {
double sum=0;
while(redEnvelope.remainPeople>0){
double money=redEnvelope.giveMoney();
System.out.printf("%.2f\t",money);
sum=sum+money;
}
String s=String.format("%.2f",sum); //金额保留两位小数
sum=Double.parseDouble(s);
System.out.printf("\n%.2f元的红包被抢完",sum);
}
}