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. 03python面向对象编程之多态和枚举6

    7.多态性 对于弱类型的语言来说,变量并没有声明类型,因此同一个变量完全可以在不同的时间引用不同的对象.当同一个变量在调用同一个方法时,完全可能呈现出多种行为(具体呈现出哪种行为由该变量所引用的对象来 ...

  2. Matrix快速幂 模板

    讲解:http://www.cnblogs.com/SYCstudio/p/7211050.html 给定n*n的矩阵A,求A^k https://www.luogu.org/problem/show ...

  3. 1134. Vertex Cover (25)

    A vertex cover of a graph is a set of vertices such that each edge of the graph is incident to at le ...

  4. vim小白练习记录

    1.vim卡死  按ctrl+s键后 vim卡死,按任何键不管用,按ctrl+q恢复

  5. MySQL 赋予用户权限(grant %-远程和localhost-本地区别)

    不过有些时候(有些版本)'%'不包括localhost,要单独对@'localhost'进行赋值,这事真让我遇上了,在对mysql5.1.32建立远程用户时. 分别对'%'和'localhost'授权 ...

  6. 缓存promise技术不错哦

    1. pageManager.js const promiseList = {}; module.exports = { putData: function(pageName,data){ promi ...

  7. @RequestBody、@RequestParam、@PathVariable区别与使用场景

    由于项目是前后端分离,因此后台使用的是spring boot,做成微服务,只暴露接口.接口设计风格为restful的风格,在get请求下,后台接收参数的注解为RequestBody时会报错:在post ...

  8. Bloom Filter的算法

     Bloom Filter的算法: 为了降低冲突的概念,Bloom Filter使用了多个哈希函数,而不是一个.创建一个m位BitSet,先将所有位初始化为0,然后选择k个不同的哈希函数.第i个哈希函 ...

  9. Spring Boot关于layui的通用返回类

    1.关于layui的通用返回类 code.count.data.msg public class Msg { private long code = 0; private long count = 0 ...

  10. 【leetcode】1123. Lowest Common Ancestor of Deepest Leaves

    题目如下: Given a rooted binary tree, return the lowest common ancestor of its deepest leaves. Recall th ...