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. 【串线篇】spring boot使用外置的Servlet容器

    嵌入式Servlet容器:应用打成可执行的jar 优点:简单.便携: 缺点:默认不支持JSP.优化定制比较复杂 (使用定制器[ServerProperties/自定义EmbeddedServletCo ...

  2. uoj280 【UTR #2】题目难度提升 堆维护中位数+set

    题目传送门 http://uoj.ac/problem/280 题解 这道题很妙啊. 这种题目如果给予选手足够的时间,每一个选手应该都能做出来. 大概就是核心思路看上去很简单,但是想要推出来并不简单. ...

  3. C++ GUI Qt4编程-创建自定义窗口部件

    C++ GUI Qt4编程-创建自定义窗口部件   Qtqt4 通过Qt窗口部件进行子类化或者直接对QWidget进行子类化,就可以创建自定义窗口部件,下面示范两种方式,并且也会说明如何把自定义窗口部 ...

  4. java(jdk8)死锁案例

    package testSynchorized; public class SynchronizedDeadLockTest { static Object src1 = new Object(); ...

  5. 多对多关系表的创建方式、forms组件

    目录 多对多关系表的三种创建方式 1.全自动,Django自动创建 2.纯手撸 3.半自动(推荐使用) forms组件 小例子 forms组件 校验器 钩子函数 局部钩子 全局钩子 forms组件常用 ...

  6. vueroute的router.addRoutes

    router.addRoutes(routes: Array<RouteConfig>)动态添加更多路由到路由器.参数必须是使用与routes构造函数选项相同的路径配置格式的Array .

  7. 面试题常考&必考之--js中的call()和apply()

    apply: 接受两个参数,第一个参数是要绑定给this的值,第二个参数是一个参数数组.当第一个参数为null.undefined的时候,默认指向window. call: 第一个参数是要绑定给thi ...

  8. css语法以及css选择器

    CSS语法 CSS的标准语法主要由两方面构成一是 选择器.二是 声明框. 一.选择器      通过选择器可以选定页面指定的元素,并将声明块中的样式应用在选择器选中的元素中去. 二.声明框       ...

  9. 树状数组板子 x

    树状数组! 参考 http://www.cnblogs.com/zzyh/p/6992148.html 洛谷 P3374 [模板]树状数组 1 题目描述 如题,已知一个数列,你需要进行下面两种操作: ...

  10. 【Java】JavaMail使用网易企业邮箱发邮件

    邮件发送器 /** * 邮件发送器 * * @author Zebe */ public class MailSender implements Runnable { /** * 收件人 */ pri ...