常用实用类例题3

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);
}
}





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值