JavaSE编码试题强化练习2
1.编写递归算法程序:一列数的规则如下: 0、1、1、2、3、5、8、13、21、34...... 求数列的第40位数是多少。
public class TestRecursion {
public static void main(String[] args) {
/**
* 调用fibo方法并输出结果
*/
int n = 40;
TestRecursion tr = new TestRecursion();
System.out.println(tr.fibo(n));
}
/**
* 定义递归方法
*/
private long fibo(int n) {
/**
* 递归结束条件1:数列的第一个数0
*/
if (n == 0){
return 0;
}
/**
* 递归结束条件2:数列的第二个数是1
*/
if (n == 1){
return 1;
}
/**
* 运用递归求第n个数
*/
return fibo(n - 1)+fibo(n - 2);
}
}
运行结果:

2.编写多线程程序,模拟多个人通过一个山洞的模拟。这个山洞每次只能通过一个人,每个人通过山洞的时间为5秒,有10个人同时准备过此山洞,显示每次通过山洞人的姓名和顺序。
/**
* 山洞类实现了Runnable接口
*/
public class Cave implements Runnable {
/**
* 初始人数为设为0
*/
private int crossedNum = 0;
@Override
public void run() {
cross();
}
private synchronized void cross() {
try {
/**
* 每个人通过山洞的时间为5秒
*/
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
/**
* 人数计数
*/
crossedNum++;
System.out.println(Thread.currentThread().getName()+"通过了山洞,这是第"+crossedNum+"个通过的人");
}
}
/**
* 2.编写多线程程序,模拟多个人通过一个山洞的模拟。
* 这个山洞每次只能通过一个人,每个人通过山洞的时间为5秒,有10个人同时准备过此山洞,显示每次通过山洞人的姓名和顺序。
*/
public class TestMultiThreading {
public static void main(String[] args) {
/**
* 创建一个山洞
*/
Cave ca = new Cave();
/**
* 创建十个过山洞的线程
*/
for (int i = 0; i < 10; i++) {
Thread t = new Thread(ca,"t"+i);
t.start();
}
}
}
运行结果:
间隔5秒输出一次结果,最终图如下

3.由控制台按照固定格式输入学生信息,包括学号,姓名,年龄信息,当输入的内容为exit退出;将输入的学生信息分别封装到一个Student对象中,再将每个Student对象加入到一个集合中,要求集合中的元素按照年龄大小正序排序;最后遍历集合,将集合中学生信息写入到记事本,每个学生数据占单独一行。
/**
* 创建学生类,实现Comparable接口
*/
public class Student implements Comparable<Student> {
/**
* 私有属性:学号,姓名,年龄
*/
private Integer stuId;
private String name;
private Integer age;
/**
*构造方法
*/
public Student() {
}
public Student(Integer stuId, String name, Integer age) {
this.stuId = stuId;
this.name = name;
this.age = age;
}
/**
* getter和setter方法
*/
public Integer getStuId() {
return stuId;
}
public void setStuId(Integer stuId) {
this.stuId = stuId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public int compareTo(Student stu) {
return this.age - stu.age;
}
public String toString(){
return "Student [age = " + age + ",name = " + name +",stuId = " + stuId + "]";
}
}
public class TestStudent {
public static void main(String[] args) {
Set<Student> stuSet = saveStudentInfo();
outputInfo(stuSet);
}
private static Set<Student> saveStudentInfo() {
Scanner input = new Scanner(System.in);
/**
* 创建TreeSet保存学生信息
*/
Set<Student> stuSet = new TreeSet<Student>();
while (true){
/**
* 输入提示
*/
System.out.println("请输入学生信息(学号#姓名#年龄)");
String inputData = input.nextLine();
/**
* 判断是否退出 inputData.equals("exit")
*/
if ("exit".equals(inputData)){
break;
}
/**
* 把用户输入的学生信息分割为String[]
*/
String [] info = inputData.split("#");
/**
* 将输入信息封装到Student对象中
*/
Student stu = new Student(Integer.parseInt(info[0]),info[1],
Integer.parseInt(info[2]));
/**
* 将学生对象加入集合
*/
stuSet.add(stu);
}
return stuSet;
}
private static void outputInfo(Set<Student> stuSet){
File file = new File("e:/student.txt");
/**
* 创建文件输出流对象
*/
FileWriter fw = null;
try {
fw = new FileWriter(file);
Iterator<Student> it = stuSet.iterator();
while (it.hasNext()){
String info = it.next().toString();
/**
* 将字符串写入记事本
*/
fw.write(info);
/**
* 完成换行
*/
fw.write("\r\n");
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
运行结果:


JavaSE编码试题强化练习2的更多相关文章
- JavaSE编码试题强化练习1
1. 编写应用程序,创建类的对象,分别设置圆的半径.圆柱体的高,计算并分别显示圆半径.圆面积.圆周长,圆柱体的体积. /** * 定义父类--圆类 */ public class Circle { / ...
- JavaSE编码试题强化练习7
1.编写应用程序,创建类的对象,分别设置圆的半径.圆柱体的高,计算并分别显示圆半径.圆面积.圆周长,圆柱体的体积. /** * 圆类 */ public class Circle { /** * 类属 ...
- JavaSE编码试题强化练习6
1.写出选择排序的代码实现,对一个int数组进行排序 public class TestSelectSort { public static void main(String[] args) { in ...
- JavaSE编码试题强化练习5
1.不使用函数实现字符串的翻转 /** * 1.不使用函数实现字符串的翻转 */ public class TestStringReverse { public static void main(St ...
- JavaSE编码试题强化练习4
1.编写一个Worker类,为Worker类添加相应的代码,使得Worker对象能正确放入TreeSet中.并编写相应的测试代码. /** * Worker类 */ public class Work ...
- JavaSE编码试题强化练习3
1.给20块钱买可乐,每瓶可乐3块钱,喝完之后退瓶子可以换回1块钱,问最多可以喝到多少瓶可乐. public class TestCirculation { public static void ma ...
- JavaSE面试题
JavaSE面试题 欢迎到我的Git仓库去提交您觉得优秀的内容! 1.是否可以从一个static方法内部发出对非static方法的调用? 不可以.当一个static方法被调用时,可能还没有创建任何实例 ...
- [002] - JavaSE面试题(二):基本数据类型与访问修饰符
第一期:Java面试 - 100题,梳理各大网站优秀面试题.大家可以跟着我一起来刷刷Java理论知识 [002] - JavaSE面试题(二):基本数据类型与访问修饰符 第1问:Java的数据类型有哪 ...
- JavaSE 面试题: 类初始化和实例初始化等
JavaSE 面试题 类初始化和实例初始化等 class Father { private int i = test(); private static int j = method(); stati ...
随机推荐
- 009-流程控制 for 语句
流程控制 for 语句 ##################### 语法一 ################################# #!/bin/bash do echo $i done ...
- SQL SERVER BCP导入导出
bcp是SQL Server中负责导入导出数据的一个命令行工具,它是基于DB-Library的,并且能以并行的方式高效地导入导出大批量的数据.bcp可以将数据库的表或视图直接导出,也能通过SELECT ...
- CCPC-Wannafly Winter Camp Day1 流流流动 (树形dp)
题目描述 喜欢数学的wlswls最近被萎住了. 现在他一共有1...n1...n这么多数字,取数字ii会得到f[i]f[i]的收益.数字之间有些边,对于所有的i(i != 1)i(i!=1),若ii为 ...
- jenkins git项目clean before checkout 和 wipe out repository & force clone
clean before checkout:会先执行一遍git clone,删除一些untracked文件和目录,比如删除上一次打包编译产生的文件 wipe out repository & ...
- 针对360浏览器读取不了cookie的问题
今天学习cookie的时候发现在360和谷歌浏览器下设置cookie打开是空白的!经过一番搜索才知道在本地是访问不了cookie只能在服务器端进行访问,但是仍然可以在火狐下进行访问
- Hadoop之MapReduce 本机windows模式运行
hadoop在windows本机运行 (1)在 windows环境下编译好的hadoop放到没有中文和空格的路径下 (2)编译好的hadoop内的hadoop.all文件要放到windows机器的wi ...
- Ubuntu Text editor文本编辑器相关设置
刚开始不熟悉Ubuntu,设置个文本编辑界面都难找到: 打开后在顶上的导航栏,下拉框内有preferences: 里面可以设置视图.字体颜色等
- 关于js节流函数throttle和防抖动debounce
废话不多说,直奔主题. 什么是throttle和debounce? 这两个方法的主要目的多是用于性能优化.最常见的应用尝尽就是在通过监听resize.scroll.mouseover等事件时候的性能消 ...
- connect to SQL Server in python on centos
在centos 6.5 下python使用pyodbc连接sql server 报错: [unixODBC][Driver Manager]Can't open lib 'SQL Server'... ...
- Serverless Kubernetes入门:对kubernetes做减法
背景 Kubernetes作为通用的容器编排系统,承载了广泛的应用和场景,包括CI/CD,数据计算,在线应用,AI等,然而由于其通用性和复杂性,管理一个kubernetes集群对于很多用户而言还是充满 ...