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