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. hdu 1506 单调栈

    #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) #defin ...

  2. web框架-(三)Django进阶

    通过上节课的学习,我们已经对Django有了简单的了解,现在来深入了解下~ 1. 路由系统 1.1 单一路由对应 url(r'^index$', views.index), 1.2 基于正则的路由 u ...

  3. Sublime3 配置node.js 环境 The process "node.exe" not found

    配置中文显示调试结果 [下载地址](https://github.com/tanepiper/SublimeText-Nodejs) 1. 到上述地址下载压缩文件 2.将文件解压到sublime的插件 ...

  4. [Comet OJ - Contest #9 & X Round 3] Namid[A]me

    传送门 一开始读错题了,以为是\(\sum_{1\leq u\leq v\leq n}f(u,v)\),还疑惑这题这么简单怎么没人做( 实际上是\(\sum_{1\leq u\leq v\leq n} ...

  5. 28.密码学知识-hash函数-5——2019年12月19日

    5. 单向散列函数 "单向散列函数 --- 获取消息的指纹" 在刑事侦查中,侦查员会用到指纹.通过将某个特定人物的指纹与犯罪现场遗留的指纹进行对比,就能够知道该人物与案件是否存在关 ...

  6. python如何导入自定义文件和模块$PYTHONHOME$\Lib\site-packages 方法

    python 中如何引用自己创建的源文件(*.py)呢? 也就是所谓的模块. 假如,你有一个自定义的源文件,文件名:saySomething.py .里面有个函数,函数名:sayHello.如下图: ...

  7. django的自定义约束

    准备阶段 在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag. 在app中创建templatetags模块(模块名只能是templa ...

  8. sys模块-与python解释器交互的模块

    需要  import sys a=sys.platform   #获取当前系统平台 #如果是window系统就返回‘win32’#如果是linux系统就返回‘linux’#如果是Windows/Cyg ...

  9. man cal

    CAL(1)                                                                  CAL(1) NAME       cal - 显示一个 ...

  10. shell处理文件内容

    1.head:输出前N行 2.tail:输出后N行 3.cat:查看文件所有内容 4.wc:统计文件内容相关信息(行数,字符数等) 5.