Math和日期类练习

1.编写一个方法,找到两个日期格式的字符串的最大值:
    方法声明如下:
   public static Date max(String date1, String date2)

package pro_0412_homework;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 1.编写一个方法,找到两个日期格式的字符串的最大值:
    方法声明如下:
   public static Date max(String date1, String date2)
 */
public class HomeWork01 
{
	public static void main(String[] args) 
	{
		Date d=HomeWork01.max("2019-04-13 20:20:00", "2019-04-13 20:10:00");
		System.out.println(d);
	}
	public static Date max(String date1, String date2)
	{
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date d1 = null;
		Date d2 = null;
		try {
			d1=sdf.parse(date1);//String-->date
			d2=sdf.parse(date2);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		long lon1=d1.getTime();//date-->long
		long lon2=d2.getTime();
		/*System.out.println(lon1);
		System.out.println(lon2);*/
		long lon=Math.max(lon1, lon2);
		Date d=new Date(lon); //long--->date
		return d;
	}
}

2.输入日期格式字符串作为商品的生产日期,输入保质期(天) ;计算截止
    到今天,该商品还有多少天会过保质期 
  >1、控制台输入字符串转为日期格式 
  >2、将输入日期增加保质期天数
  >3、取得当前系统日期,比较两个日期,如果过期输出“该商品已经过期”
               请输入商品的生产日期: (yyyy-MM-dd) 
         2017-1-1 
               输入保质期(天):
         30
          今日期为: 2018-01-17
          该商品已经过期
   >4、如果没有过期,输出天数
        请输入商品的生产日期: (yyyy-MM-dd) 
        2018-1-1
        请输入保期(天) :
        30
        今天期为: 2018-01-17
        还有13天过期

package pro_0412_homework;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

public class HomeWork02 
{
	public static void main(String[] args) 
	{
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");//定义日期格式
		Scanner in=new Scanner(System.in);
		System.out.println("请输入商品的生产日期: (yyyy-MM-dd)");
		String sd=in.nextLine();//生产日期
		try {
			Date sc=sdf.parse(sd);//生产日期字符串 --> 日期格式
			System.out.println("输入保质期(天):");
			int t=in.nextInt();//保质期天数
			Date jt=sdf.parse(sdf.format(new Date()));//今天date类型
			System.out.println("今日期为:"+sdf.format(new Date()));
			
			Calendar calendar=Calendar.getInstance();//创建一个实例
			calendar.setTime(sc);//实例化一个Calendar。
			calendar.add(Calendar.DATE, t);//给当前日期加上指定天数,
			
			Date c=calendar.getTime();//到期时间
			if(c.compareTo(jt)==-1) {
				System.out.println("该商品已经过期");
			}else {
				long millionTime=c.getTime()-jt.getTime(); //得到毫秒数
				//System.out.println(millionTime);
				System.out.println("还有"+(millionTime/1000/60/60/24 )+ "天过期");
			}
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}
}

3、生成十个0~100之间的随机数,放到数组中,然后排序输出。
   (知识点: Math类取整,获得随机数等) [必做题]

package pro_0412_homework;
/**
 * 3、生成十个0~100之间的随机数,放到数组中,然后排序输出。
   (知识点: Math类取整,获得随机数等) [必做题]
 */
public class HomeWork03 
{
	public static void main(String[] args) 
	{
		int[] arr=new int[10];
		for(int i=0;i<arr.length;i++) 
		{
			arr[i]=(int)(Math.random()*101);
			//System.out.println(arr[i]);
		}
		//使用冒泡排序使数组元素从 小到大 排序
		for(int i=0;i<arr.length-1;i++) //遍历几轮
		{
			for(int j=0;j<arr.length-1-i;j++) 
			{
				if(arr[j]>arr[j+1]) //如果要显示从大到小则:arr[j]<arr[j+1]
				{
					int temp=arr[j];//定义一个临时变量
					arr[j]=arr[j+1];
					arr[j+1]=temp;
				}
			}
		}
		//遍历输出数组
		for(int i=0;i<arr.length;i++)
		{
			System.out.print(arr[i] + "\t");
		}
	}
}

1、巴黎时间比北京时间晚7个小时,纽约时间比北京时间晚12个小时 ,试编写一程序,
     根据输入的北京时间输出相应的巴黎和纽约时间。[选做题]

package pro_0412_homework;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

/**
 * 1、巴黎时间比北京时间晚7个小时,纽约时间比北京时间晚12个小时 ,试编写一程序,
     根据输入的北京时间输出相应的巴黎和纽约时间。[选做题]
 */
public class HomeWork04 
{
	public static void main(String[] args) 
	{
		Scanner in = new Scanner(System.in);
		System.out.println("请输入北京时间(yyyy-MM-dd HH:mm:ss):");
		String sd=in.nextLine();//得到输入的日期字符
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		try {
			Date d = sdf.parse(sd);
			long ld=d.getTime();//得到long
			Date d3=new Date(ld-7*60*60*1000);
			Date d4=new Date(ld-12*60*60*1000);
			DateFormat dFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //HH表示24小时制;hh表示12小时制;
			System.out.println("巴黎时间为:"+dFormat.format(d3));
			System.out.println("纽约时间为:"+d4);
		} catch (ParseException e) {
			e.printStackTrace();
		}				
	}
}

4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。[选做题] 

package pro_0412_homework;
import java.util.Scanner;
/**
 * 4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。
   [选做题] 
 */
public class HomeWork06 
{
	public static void main(String[] args) 
	{
		Scanner in=new Scanner(System.in);
		System.out.println("请输入一个字符串:");
		String str1=in.nextLine();
		HomeWork06.show2(str1);
	}
	public static void show(String str1)
	{
		int chines=0;
		int english=0;
		int num=0;
		for(int i=0;i<str1.length();i++)
		{
			char zf=str1.charAt(i);
			if(zf>='A'&& zf<='Z' || zf>='a'&& zf<='z')
			{
				english++;
			}
			else if(zf>='0' && zf<='9')
			{
				num++;
			}else 
			{
				chines++;
			}
		}
		System.out.println("chines:"+chines+" english:"+english+" num:"+num);
	}
	public static void show2(String str1)
	{
		int chines=0;
		int english=0;
		int num=0;
		for(int i=0;i<str1.length();i++)
		{
			char zf=str1.charAt(i);
			/*Character.UnicodeBlock ub = Character.UnicodeBlock.of(zf);
			System.out.println(ub);//不可取*/
			//System.out.println(Character.getType(zf));//小写字母:1  大写字母:2  汉字:5  数字:9
			if(Character.getType(zf)==1 || Character.getType(zf)==2)
			{
				english++;
			}
			else if(Character.getType(zf)==9)
			{
				num++;
			}else if(Character.getType(zf)==5)
			{
				chines++;
			}
		}
		System.out.println("chines:"+chines+" english:"+english+" num:"+num);
	}
}

 5、有一种数叫回文数,正读和反读都一样,如12321便是一个回文数.
     编写一个程序,从命令行得到一个整数,判断该数是不是回文数。 [选做题]

package pro_0412_homework;
import java.util.Scanner;
/**
 * 5、有一种数叫回文数,正读和反读都一样,如12321便是一个回文数.
     编写一个程序,从命令行得到一个整数,判断该数是不是回文数。
   [选做题]
 */
public class HomeWork07 
{
	public static void main(String[] args) 
	{
		Scanner in=new Scanner(System.in);
		System.out.println("请输入整数:");
		String str1=in.nextLine();
		HomeWork07.show(str1);
	}
	public static void show(String str1) //这个方法不能输出  该数是回文数,存在问题
	{
		for(int x=0,y=str1.length()-1;x<y;x++,y--)
		{
			//System.out.println(0);
			if(str1.charAt(x)!=str1.charAt(y))
			{
				System.out.println("该数不是回文数");
				break;
			}
		}
	}
	public static void show2(String str1)
	{
		int sum=0;
		for(int x=0,y=str1.length()-1;x<y;x++,y--)
		{
			if(str1.charAt(x)==str1.charAt(y))
			{
				sum++;
			}
		}
		if(sum==(str1.length()/2))
		{
			System.out.println("该数是回文数");
		}else 
		{
			System.out.println("该数不是回文数");
		}
	}
}

输入一个手机号码,将中间四位使用星号替代。
    例如:
    输入: 13312349876
    输出: 133****9876

package pro_0412_homework;
import java.util.Scanner;
/**
 * 输入一个手机号码,将中间四位使用星号替代。
    例如:
    输入: 13312349876
    输出: 133****9876
 */
public class HomeWork08 
{
	public static void main(String[] args) 
	{
		Scanner in=new Scanner(System.in);
		System.out.println("请输入手机号:");
		String str1=in.nextLine();
		StringBuffer str2=new StringBuffer(str1);
		System.out.println(str2.replace(str2.length()/2-2, str2.length()/2-2+4, "****"));
	}
}

2. 分析如下程序,并写出结果.
    知识点: 基本数据类型转换为包装类、自动装箱和自动拆箱

package pro_0412_homework;
/**
 * 2. 分析如下程序,并写出结果.
    知识点: 基本数据类型转换为包装类、自动装箱和自动拆箱
 */
public class HomeWork11 
{
	public static void main(String[] args) 
	{
		Integer x=new Integer(10);
		Integer y=new Integer(10);
		System.out.println(x==y);//false
		System.out.println(x.equals(y));//true
	}
}

1·编写一个截取字符串的函数,输入为一个字符串和字节数,
      输出为按字节截取的字符串,但要保证汉字不被截取半个,
      如"我ABC", 4,应该截取"我AB",输入"我ABC汉DEF", 6,
      应该输出"我ABC",而不是"我ABC+汉的半个"。
      知识点: String中常用的方法 
     gbk中一个汉字两个字节

package pro_0412_homework;
import java.util.Scanner;
public class HomeWork14 
{
	public static void main(String[] args) 
	{
		Scanner in=new Scanner(System.in);
		System.out.println("请输入一个字符串:"); //我ABC汉DEF
		String str1=in.nextLine();
		System.out.println("请输如要截取的字节数:");//6
		int j=in.nextInt();
		byte[] bstr1=str1.getBytes(); //String-->byte字节数组
		//System.out.println(bstr1.length);//字节数组的长度 //10
		//System.out.println(bstr1[j]);//如果是汉字为负数
		if(bstr1[j]<0)//遇到了汉字  gbk中一个汉字两个字节,UTF-8中占3个字节
		{
			System.out.println(new String(bstr1,0,--j));//将byte数组转为String输出
		}
		else
		{
			System.out.println(new String(bstr1,0,j));
		}
	}
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值