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的更多相关文章

  1. JavaSE编码试题强化练习1

    1. 编写应用程序,创建类的对象,分别设置圆的半径.圆柱体的高,计算并分别显示圆半径.圆面积.圆周长,圆柱体的体积. /** * 定义父类--圆类 */ public class Circle { / ...

  2. JavaSE编码试题强化练习7

    1.编写应用程序,创建类的对象,分别设置圆的半径.圆柱体的高,计算并分别显示圆半径.圆面积.圆周长,圆柱体的体积. /** * 圆类 */ public class Circle { /** * 类属 ...

  3. JavaSE编码试题强化练习6

    1.写出选择排序的代码实现,对一个int数组进行排序 public class TestSelectSort { public static void main(String[] args) { in ...

  4. JavaSE编码试题强化练习5

    1.不使用函数实现字符串的翻转 /** * 1.不使用函数实现字符串的翻转 */ public class TestStringReverse { public static void main(St ...

  5. JavaSE编码试题强化练习4

    1.编写一个Worker类,为Worker类添加相应的代码,使得Worker对象能正确放入TreeSet中.并编写相应的测试代码. /** * Worker类 */ public class Work ...

  6. JavaSE编码试题强化练习3

    1.给20块钱买可乐,每瓶可乐3块钱,喝完之后退瓶子可以换回1块钱,问最多可以喝到多少瓶可乐. public class TestCirculation { public static void ma ...

  7. JavaSE面试题

    JavaSE面试题 欢迎到我的Git仓库去提交您觉得优秀的内容! 1.是否可以从一个static方法内部发出对非static方法的调用? 不可以.当一个static方法被调用时,可能还没有创建任何实例 ...

  8. [002] - JavaSE面试题(二):基本数据类型与访问修饰符

    第一期:Java面试 - 100题,梳理各大网站优秀面试题.大家可以跟着我一起来刷刷Java理论知识 [002] - JavaSE面试题(二):基本数据类型与访问修饰符 第1问:Java的数据类型有哪 ...

  9. JavaSE 面试题: 类初始化和实例初始化等

    JavaSE 面试题 类初始化和实例初始化等 class Father { private int i = test(); private static int j = method(); stati ...

随机推荐

  1. 011-linux服务管理

    linux服务管理 [root@zabbix lianxi]# chkconfig --list 注:该输出结果只显示 SysV 服务,并不包含 原生 systemd 服务.SysV 配置数据 可能被 ...

  2. PAT Advanced 1019 General Palindromic Number (20 分)

    A number that will be the same when it is written forwards or backwards is known as a Palindromic Nu ...

  3. css实现div内凹角样式

    平常的开发中我们一般使用到圆角都是外凸的,即border-radius属性.而如果有内凹角的情况,我们一般的考虑实现方法有2种.一种是直接使用背景图片,一种是使用css. 用到的属性则是backgro ...

  4. Vscode添加谷歌Debug插件

    1. 2.安装好 Debugger for Chrome之后,找到要进行Debug的文件 3. 4.进入到launch.json文件中进行相应的配置 配置文件内容如下: { "version ...

  5. vue组件结构

    1.组件结构 2.项目结构

  6. 同样是1ms子帧,为什么5G的时延比LTE小得多

    转载:http://www.txrjy.com/forum.php?mod=viewthread&tid=1045092 个子帧中一定包含14个OFDM符号.当子载波间隔是15KHz时,1个5 ...

  7. Comet OJ - Contest #6 D. 另一道树题 并查集 + 思维 + 计数

    Code: #include <cstdio> #include <algorithm> #include <cstring> #include <vecto ...

  8. SpringBoot 集成 Spring Session

    SpringBoot 集成 Spring Session 应该讲解清楚,为什么要使用 Redis 进行 Session 的管理. Session 复制又是什么概念. Spring Session 在汪 ...

  9. hibernate class cast exception from object to ...

    http://stackoverflow.com/questions/22548325/java-lang-classcastexception-cannot-be-cast-to-java-lang ...

  10. loadrunner常用函数整理

    1.int web_reg_save_param("参数名","LB=左边界","RB=右边界",LAST);   //注册函数,在参数值出 ...