常用类学习和基础综合练习

1.String s = "113@ ere qqq yyui ";

请输出所有子串
113 ere qqq yyui

public void aboutString() {
	String s = "113@ ere qqq yyui";
	s = s.replaceAll("@", "");
	String[] ss = s.split(" ");
	for(String sss: ss) {
		System.out.println(sss);
	}
}
2.获取当前日期,并把这个日期转化为指定格式的字符串,如:2088-08-08
public static void aboutDate() {
	Date date = new Date();
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	String dateStr = sdf.format(date);
	System.out.println(dateStr);
}
3.生成一个随机100内的小数,转化为保留两位小数的字符串,不考虑四舍五入的问题
public static void aboutMath() {
	double random = Math.random() * 100;
	//String rad = String.valueOf(random);
	String rad = random + "";
	System.out.println(rad);//23.1223412
	int index = rad.indexOf(".");
	String str = rad.substring(0, index + 3);
	System.out.println(str);
}
4.输入一行字符,分别统计出其英文字母、空格、数字和其它字符的个数。提示:对比char字符在ASK码的范围,就可以确定它符号的类别。
public class Client {
	
	public Map<String, Integer> getCharNumber(String str) {
		int num = 0,letter = 0,space = 0,other = 0;//变量的共同定义,表示这四个变量都是int类型
		Map<String,Integer> map = new HashMap<String, Integer>();
		if(str != null && str.length() > 0) {
			char[] charArray = str.toCharArray();//将字符串分割为char数组
			for(char cr:charArray) {
				if(cr >= 48 && cr <= 57) {//数字
					num++;
				} else if((cr >= 65 && cr <= 90) || (cr >= 97 && cr <= 122)) {//字母
					letter++;
				} else if(cr == 32) {//空格
					space++;
				} else {//其他
					other++;
				}
			}
		}
		map.put("数字", num);
		map.put("字母", letter);
		map.put("空格", space);
		map.put("其他", other);
		return map;
	}
	
	public static void main(String[] args) {
		Client client = new Client();
		//如果方法存在返回值,需要创建一个与返回值类型相同的变量来接收返回值
		Map<String, Integer> map = client.getCharNumber("n wn =-0	qu wr s['");
		System.out.println(map);
	}
}
5.要求写一个秒表类(StopWatch),该秒表类该类在系统中只能有存在一个实例。并且存在star方法,可以用于开始计时,并且输出开始时间,同时存在stop方法用于停止计时,输出结束时间,要求秒表可以存储以毫秒为单位十个计时任务
/**
 * 秒表类
 * 只能存在一个实例-采用单例设计模式
 * @author 一教室
 *
 */
public class StopWatch {
	/**
	 * 私有化构造器
	 */
	private StopWatch() {
		
	}
	
	/**
	 * 创建时间格式化对象作为属性,方便调用
	 */
	private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
	
	//实例化一个秒表对象,将该对象作为秒表类的属性
	private static StopWatch stopWatch = new StopWatch();
	
	/**
	 * 创建公共方法,对外提供创建出来的stopWatch对象
	 * @return
	 */
	public static StopWatch getInstance() {
		return stopWatch;
	}
	
	/**
	 * 设置一个属性(开始时间记录器),用于存储秒表开始计时的时间 
	 */
	private Date startTime;
	
	/**
	 * 设置一个属性(计时任务存储器),用于保存十个计时任务
	 */
	private List<Long> record = new ArrayList<Long>();
	
	/**
	 * 只能生成get方法,对外提供计时任务存储器数据,不能生成set方法,防止直接修改存储器数据
	 * @return
	 */
	public List<Long> getRecord() {
		return record;
	}


	/**
	 * 开始计时方法
	 */
	public void start() {
		Date date = new Date();
		startTime = date;//将开始计时的时间存储到开始时间记录器中
		System.out.println("开始时间:" + sdf.format(date));
	}
	
	/**
	 * 结束计时方法
	 */
	public void stop() {
		if(startTime == null) {//说明没有调用开始计时方法
			System.out.println("未曾开始计时");
		} else {
			Date date = new Date();
			System.out.println("结束时间:" + sdf.format(date));
			long time = date.getTime() - startTime.getTime();//结束时间-开始时间 = 计时任务要求毫秒数
			if(record.size() >= 10) {
				record.remove(0);//将最早的计时任务删除
				record.add(time);
			} else {
				record.add(time);
			}
		}
	}
}
6.深秋,树叶开始掉落。第一天树叶开始掉落了一半还多一片,第二天又落下了剩下的一半零一片。如此往复循环,直到第十五天,树上还剩一片叶子。问:这颗大树总共有多少片叶子(要求定义一个静态方法)
public static void getAllLeaf(int day) {
		int leaf = 1;
		for(int i = day; i > 1; i--) {
			leaf = (leaf + 1) * 2;
		}
		System.out.println("大树共有" + leaf + "片");
	}
7.中国汽车的车牌号除了省份和城市信息,剩下的是数字和字母的五位组合(没有字母i和o)。有一辆汽车出了事故,司机驾车逃跑,有三位目击者向警方提供线索。

甲:车牌号里面有字母T和R
乙:车牌号里面是三个数字,车牌号开头是T
丙:车牌号里的数字和是15,并且没有相同数字
例如:T24R9就是满足上面的三个条件当然,满足上面的三个条件的车牌号还有许多,要求写出一个方法找出所有可能的车牌号

public static void getAllCarNumber() {
		List<String> list = new ArrayList<String>(); 
		for(int x = 0; x < 10; x++) {
			for(int y = 0; y < 10; y++) {
				for(int z = 0; z < 10; z++) {
					if(x == y || x == z || y == z) {
						continue;
					} else {
						if(x + y + z == 15) {
							list.add("" + x + y + z);
						}
					}
				}
			}
		}
		List<String> allCarNumber = new ArrayList<String>();
		/**
		 * 096
		 * TR096
		 * T0R96
		 * T09R6
		 * T096R
		 */
		for(int i = 0; i < list.size(); i++) {
			String str = list.get(i);
			char[] num = str.toCharArray();
			for(int t = 0; t <= num.length; t++) {
				String carNum = "T";
				for(int a = 0; a < t; a++) {
					carNum += num[a];
				}
				carNum += 'R'; 
				for(int b = t; b < num.length; b++) {
					carNum += num[b];
				}
				allCarNumber.add(carNum);
			}
		}
		System.out.println(allCarNumber);
	}
8.利用公式x1 = (-b + sqrt(bb-4ac))/(2a), x2 = (-b - sqrt(bb-4ac))/(2a)求一元二次方程ax2+ bx + c =0的根,其中a不等于0。要求写一个方法,参数为三个浮点数a, b, c。分别表示方程ax2 + bx + c =0的系数。

该方法输出一行,表示方程的解。
若b^2 = 4 * a * c,则两个实根相等,则输出形式为:x1=x2=…。
若b^2 > 4 * a * c,则两个实根不等,则输出形式为:x1=…;x2 = …,其中x1>x2。
若b^2 < 4 * a * c,则有两个虚根,则输出:x1=实部+虚部i; x2=实部-虚部i,即x1的虚部系数大于等于x2的虚部系数,实部为0时不可省略。实部 = -b / (2a), 虚部 = sqrt(4ac-bb) / (2*a)

所有实数部分要求精确到小数点后5位,数字、符号之间没有空格。

public void getRootSeeking(double a, double b, double c) {
		if(Math.pow(b, 2) > 4 * a * c) {
			double realPart = -b / (2 *a);
			String str = String.format("%.5f", realPart);//String类的格式化方法,"%.5f"表示小数点后保留五位小数
			double xPart = Math.sqrt(Math.abs(4 * a * c - b * b)) / (2 * a);//Math.abs表示取绝对值
			String str2 = String.format("%.5f", xPart);
			String x1 = str + "+" + str2 + "i";
			String x2 = str + "-" + str2 + "i";
			System.out.println("x1=" + x1 + ";x2=" + x2);
		} else if(Math.pow(b, 2) < 4 * a * c) {
			double x1 =(-b + Math.sqrt(Math.abs(b * b - 4 * a * c))) / (2 * a); 
			String str = String.format("%.5f", x1);
			double x2 =(-b - Math.sqrt(Math.abs(b * b - 4 * a * c))) / (2 * a); 
			String str2 = String.format("%.5f", x2);
			System.out.println("x1=" + str + ";x2=" + str2);
		} else {
			double x1 =(-b + Math.sqrt(Math.abs(b * b - 4 * a * c))) / (2 * a); 
			String str = String.format("%.5f", x1);
			System.out.println("x1=x2=" + str);
		}
	}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值