Java期末题库

article/2025/10/1 15:41:04
  1. 根据如下图所示数据库信息,完成1-3小题。

(1)使用JDBC数据库连接技术,编写JDBCUtil工具类,在该类中定义getCon方法用于获得与数据库的连接对象,定义closeAll方法用于释放连接对象等资源。

import java.sql.*;public class JDBCUtil {private static String user="用户名";private static String password="密码";private static String url="jdbc:mysql://localhost:3306/数据库名";private static String driver="com.mysql.jdbc.Driver";/*** 连接数据库, 返回 Connection*/public static Connection getCon() {try {return DriverManager.getConnection(url, user, password);} catch (SQLException e) {throw new RuntimeException(e);}}/*** 关闭连接*/public static void closeAll(ResultSet set, PreparedStatement statement, Connection connection) {try {if (set != null) {set.close();}if (statement != null) {statement.close();}if (connection != null) {connection.close();}} catch (SQLException e) {throw new RuntimeException(e);}}
}

(2)应用类的封装性,创建book表对应的类,其中book表存储图书id(主键、自增)、书名、价格、作者、库存量等信息。

public class Book {private Integer id;private String name;private Double price;private String author;private Integer reserve;public Book() {}public Book(Integer id, String name, Double price, String author, Integer reserve) {this.id = id;this.name = name;this.price = price;this.author = author;this.reserve = reserve;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Double getPrice() {return price;}public void setPrice(Double price) {this.price = price;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public Integer getReserve() {return reserve;}public void setReserve(Integer reserve) {this.reserve = reserve;}@Overridepublic String toString() {return "Book{" +"id=" + id +", name='" + name + '\'' +", price=" + price +", author='" + author + '\'' +", reserve=" + reserve +'}';}
}

(3)创建BookDao类,完成增加图书信息的方法,并编写Test测试类测试。

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class BookDao {static Connection con = null;static ResultSet set=null;static PreparedStatement ps=null;public static void addBook(String name,double price,String author,int reserve) {String sql="insert into book values(null,?,?,?,?);";try {con=JDBCUtil.getCon();ps=con.prepareStatement(sql);ps.setString(1,name);ps.setDouble(2,price);ps.setString(3,author);ps.setInt(4,reserve);ps.executeUpdate();} catch (SQLException e) {e.printStackTrace();}finally {JDBCUtil.closeAll(null,ps,con);}}public static void select(){String sql="select *from book";con=JDBCUtil.getCon();try {ps=con.prepareStatement(sql);set= ps.executeQuery();while (set.next()){System.out.println("Book{" +"id=" + set.getInt("id") +", name='" + set.getString("name") + '\'' +", price=" + set.getDouble("price") +", author='" + set.getString("author") + '\'' +", reserve=" + set.getInt("reserve") +'}');}} catch (SQLException e) {e.printStackTrace();}finally {JDBCUtil.closeAll(set,ps,con);}}
}

Test

public class Test {public static void main(String[] args) {BookDao.addBook("老人与海",32.1,"海明威",4);BookDao.select();}
}

2、使用循环和break、continue等流程控制语句,计算1-n全部偶数的和,n的值在控制台输入。

import java.util.Scanner;/*** @author whlie(true){learn}*/
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int sum = 0;for (int index = 1; index < n; index++) {if (index % 2 != 0) {continue;}sum += index;}System.out.println(sum);}
}

3、一张纸的厚度大约是0.08mm,对折多少次之后能达到或超过珠穆朗玛峰的高度(8848.13米)。

public class Main {public static void main(String[] args) {//为了便于计算将原值扩大100倍long start=8;//1mm=0.001mlong end=884813000;long count=0;while (start<end){start*=2;count++;}System.out.println(count);}
}

4、创建一个存储13张牌面值的集合,如“A,1,2...Q,K”,采用高级for循环或者迭代器方法遍历集合数据输出。

import java.util.*;/*** @author whlie(true){learn}*/
public class Main {public static void main(String[] args) {String[] card=new String[]{"2","3","4","5","6","7","8","9","10","J","Q","K","A"};List<String> list = Arrays.asList(card);//高级for循环for(String s:list){System.out.print(s+" ");}//迭代器Iterator<String> iterator = list.iterator();while (iterator.hasNext()){System.out.print(iterator.next()+" ");}}
}

5、计算控制台输入的任意字符串中每个字符出现的次数。如abbbcccdabc,输出如:

a出现次数为:2

b出现次数为:4

c出现次数为:4

d出现次数为:1

这道题的题意不明,控制台输入字符串的范围没给,从样例推测字符串只包含小写字符。

import java.util.*;/*** @author whlie(true){learn}*/
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String s= scanner.nextLine();char[] chars = s.toCharArray();int[] array=new int[26];for(char c:chars){array[c-'a']++;}for (int i = 0; i < array.length; i++) {if (array[i]>0){System.out.println((char)(i+'a')+"出现次数为:"+array[i]);}}}
}

6、一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。

甲说:牌照的前两位数字是相同的;

乙说:牌照的后两位数字是相同的,但与前两位不同;

丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。

public class Main {public static void main(String[] args) {for (int i = 1000; i < 10000; i++) {if (judgeSame(i)&&judgeSqrt(i)){System.out.println(i);}}}/*** 判断甲和乙的条件* 1.前两位相同* 2.后两位相同* 3.前两位和后两位不能相同*/public static boolean judgeSame(int i){char[] chars = (i + "").toCharArray();return chars[0]==chars[1]&&chars[2]==chars[3]&&chars[0]!=chars[3];}/*** 判断丙的条件* 1.是否为完全平方数*/public static boolean judgeSqrt(int i){double a=Math.sqrt(i);return a==(int)a;}
}

7、马克思手稿中有一道趣味数学问题:有30个人,其中有男人、女人和小孩,在一家饭馆吃饭花了50先令;每个男人花3先令,每个女人花2先令,每个小孩花1先令;问男人、女人和小孩各有几人?

public class Main {public static void main(String[] args) {int count=1;for (int i = 1; i < 16; i++) {for (int j = 1; j < 25; j++) {for (int k = 1; k < 50; k++) {if (i+j+k==30&&3*i+2*j+1*k==50){System.out.println("第"+(count++)+"种可能:");System.out.print("男人:"+i+"个 " +"女人:"+j+"个 " +"小孩:"+k+"个\n");}}}}}
}

8、中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”?

个人理解:三天打鱼两天晒网是指先连续打三天鱼再连续晒两天网,5天一次循环

1,2,3天打鱼,4,5天晒网,第0天相当于上次循环的第5天

import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.*;/*** @author whlie(true){learn}*/
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请依次输入年月日,以空格间隔:");int year=scanner.nextInt();int month=scanner.nextInt();int day = scanner.nextInt();long between = ChronoUnit.DAYS.between(LocalDate.of(1990, 1, 1),LocalDate.of(year, month, day));long result=(between+1)%5;System.out.println(result<4?result==0?"晒网":"打鱼":"晒网");}
}

9、创建一个名为Shape的接口,接口内有一个计算面积的抽象方法。定义一个Circle类,实现Shape接口,并实现接口里的抽象方法。

public interface Shape {public double area(double r);
}
public class Circle implements Shape{@Overridepublic double area(double r) {return r*r*Math.PI;}
}

10、创建如图所示的窗口。

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;public class TextMain {public static String Signin;public static String register;JFrame jFrame;public static void main(String[] args) {init();}public static void init(){JFrame jFrame=new JFrame("hello");jFrame.setBounds(200, 200, 500, 400);jFrame.setLayout(null);JLabel jLabel1=new JLabel();jLabel1.setBounds(130, 100, 100, 100);jLabel1.setText("姓名:");jFrame.add(jLabel1);JLabel jLabel2=new JLabel();jLabel2.setBounds(130, 150, 100, 100);jLabel2.setText("密码:");jFrame.add(jLabel2);final JTextField jTextField=new JTextField();jTextField.setBounds(165, 135, 200, 30);jFrame.add(jTextField);final JTextField jTextField1=new JTextField();jTextField1.setBounds(165, 185, 200, 30);		jFrame.add(jTextField1);JButton jButton=new JButton();jButton.setBounds(130, 250, 85, 50);jButton.setText("登录");jFrame.add(jButton);JButton jButton1=new JButton();jButton1.setBounds(280, 250, 85, 50);jButton1.setText("注册");jFrame.add(jButton1);jFrame.setVisible(true);}
}

11、给上述窗口的登录按钮绑定点击事件,点击后获取用户在文本框输入的姓名和密码,打印输出到控制台上。(在10的基础上增加键盘监听事件)

    jTextField.addKeyListener(new KeyListener() {@Overridepublic void keyTyped(KeyEvent e) {// TODO 自动生成的方法存根if(e.getKeyChar()==KeyEvent.VK_ENTER&&!jTextField.getText().equals("")){Signin=jTextField.getText();System.out.println("姓名为:"+Signin);}}@Overridepublic void keyReleased(KeyEvent e) {}@Overridepublic void keyPressed(KeyEvent e) {}});jTextField1.addKeyListener(new KeyListener() {@Overridepublic void keyTyped(KeyEvent e) {if(e.getKeyChar()==KeyEvent.VK_ENTER&&!jTextField1.getText().equals("")){register=jTextField1.getText();System.out.println("密码为:"+register);}}@Overridepublic void keyReleased(KeyEvent e) {}@Overridepublic void keyPressed(KeyEvent e) {}});jButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {Signin=jTextField.getText();System.out.println("姓名为:"+Signin);register=jTextField1.getText();System.out.println("密码为:"+register);}});

12、使用Canvas类,绘制红色字符串“hello”,显示在JFrame窗口中。

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import javax.swing.JFrame;public class TextMain {public static String Signin;public static String register;JFrame jFrame;public static void main(String[] args) {JFrame jFrame1=new JFrame("Canvas");jFrame1.setBounds(200, 200, 500, 400);jFrame1.setLayout(null);Can can=new Can();can.setBounds(20, 20, 400, 400);jFrame1.add(can);jFrame1.setVisible(true);}
}
class Can extends Canvas{@Overridepublic void paint(Graphics g) {super.paint(g);g.setFont(new Font("黑体", Font.BOLD, 50));g.setColor(new Color(255,0,0));g.drawString("hello", 100, 100);}
}


http://chatgpt.dhexx.cn/article/HSKTyBj3.shtml

相关文章

2022史上最全java面试题题库大全800题含答案

2022史上最全java面试题题库大全800题含答案 1、 meta标签的作用是什么 2、 ReenTrantLock可重入锁&#xff08;和synchronized的区别&#xff09;总结 3、 Spring中的自动装配有哪些限制&#xff1f; 4、 什么是可变参数&#xff1f; 5、 什么是领域模型(domain model)&#…

全国计算机等级考试——二级JAVA完整大题题库【五十三道】

全国计算机等级考试二级 JAVA 题目内容 编写于2023.04.10 分为40道选择题和3道大题&#xff08;大题是程序填空类型&#xff09; 其中选择题只能进去做一次&#xff0c;一旦退出来则不可再进&#xff08;注意&#xff01;&#xff09;。大题可以重复进入&#xff0c;重复做。…

java面试题题库大全800题

1、 meta标签的作用是什么 2、 ReenTrantLock可重入锁&#xff08;和synchronized的区别&#xff09;总结 3、 Spring中的自动装配有哪些限制&#xff1f; 4、 什么是可变参数&#xff1f; 5、 什么是领域模型(domain model)&#xff1f;贫血模型(anaemic domain model)和充血模…

Java基础习题库

Java基础习题库 目录 Java基础习题库 一、Java基础之概述 1.JDK,JRE,JVM三者之间的关系&#xff0c;以及JDK、JRE包含的主要结构有哪些 2.为什么要配置path环境变量&#xff1f;如何配置&#xff1f; 3.创建如下的类&#xff0c;使得运行的话可以输出&#xff1a; 4.编译…

Javase MINA框架

MINA是一个基于TCP/IP通信的JAVA框架&#xff0c;MINA可以帮助我们快速开发高性能、高扩展的网络通信应用&#xff0c;提供了事件驱动、异步操作的编程模型&#xff0c;默认使用NIO作为底层支持 客户端实现步骤&#xff1a;

基于Java后台(Springboot框架)+前端小程序(MINA框架)+Mysql数据库的疫苗预约小程序系统设计与实现

项目背景和意义 目的&#xff1a;本课题主要目标是设计并能够实现一个基于微信小程序疫苗预约系统&#xff0c;前台用户使用小程序&#xff0c;后台管理使用基JAVAMySql技术&#xff1b;通过后台添加疫苗内容、价格、开放预约的日期和时间段&#xff0c;用户通过小程序登录&…

Spring Boot Starter之Mina框架封装

封装目的 目前是将Mina与Springboot的自动装配然后结合自身公司的业务对Mina进行统一的封装&#xff0c;目的是让代码可读性提高&#xff0c;也跟加便于使用&#xff0c;不用再写重复的代码 功能介绍 实现功能&#xff1a;可以通过注解的方式自动配置Mina服务端相关的代码 …

java mina 框架 获取字节_浅谈Java的Mina框架传递对象

接触java的Mina框架已经有很多时间了&#xff0c;在网上也读过了很多的相关文章&#xff0c;发现Mina框架的确是一个值得拿来好好研究的东西&#xff0c;前些日子写了一个山寨QQ项目&#xff0c;其中的通信部分用到了java中自带的InputStream&#xff0c;OutputStream&#xff…

Java网络编程之MINA框架(1)

1、MINA&#xff1a; 一个简洁易用的基于TCP/IP通信的JAVA框架 2、下载地址&#xff1a; http://mina.apache.org/downloads-mina_2_0.html 3、至少需要&#xff1a; (在下载的文件中找以下两个jar包导入工程中) mina-core-2.0.21.jar、slf4j-api-1.7.26.jar 4、开发一个Mina应…

浅谈Mina框架

一、简介 Apache Mina Server 是一个网络通信应用框架&#xff0c;也就是说&#xff0c; 也可以提供JAVA对象的序列化服务、虚拟机管道通信服务等&#xff09;&#xff0c;Mina可以帮助我们快速开发高性能、高扩展性的网络通信应用&#xff0c;Mina提供了事件驱动、异步&#…

java mina框架实例_Apache Mina框架实践

1.为什么要用Apache Mina框架 ApacheMina Server 是一个网络通信应用框架,Mina 可以帮助我们快速开发高性能、高扩展性的网络通信应用&#xff0c;Mina 提供了事件驱动、异步(Mina 的异步IO 默认使用的是JAVANIO 作为底层支持)操作的编程模型。 2.ApacheMina框架使用 Mina的执行…

mina框架详解-小白收藏

目录 mina框架详解 1 简介 1.1 工作流程 1.2 服务端流程 2 简单的TCPServer 3 简单的TCPClient 4 介绍Mina的TCP的主要接口 5 日志配置 6 过滤器 7 协议编解码器 8 线程模型配置 mina框架详解 1 简介 Apache Mina Server 是一个网络通信应用框架&#xff0c;也就是…

Mina网络通信框架

认识 Mina Apache Mina Server 是一个网络通信应用框架&#xff0c;与 Netty 出自同一作者&#xff0c;Netty 借鉴了部分 Mina 的设计思路。 Mina 主要是对基于 TCP/IP、UDP/IP 协议栈的通信框架&#xff0c;Mina 可以帮助我们快速开发高性能、高扩展性的网络通信应用&#x…

MINA框架

MINA框架 一、小程序MINA框架分为三个部分&#xff1a; 有 View(视图层)、App Service(逻辑层)和 Natice(系统层)。 1、View(视图层) 视图层包含了小程序多个页面、每个页面都有WXML文件和 WXSS文件&#xff0c;是搭建页面视图的结构和展现样式。 2、App Service(逻辑层) …

图文详解mina框架

Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(当然,也可以提供JAVA 对象的序列化服务、虚拟机管道通信服务等),Mina 可以帮助我们快速开发高性能、高扩展性的网络通信应用,Mina 提供了事件驱动、异步(Mina 的异步…

要点初见:用Python进行微观交通模型仿真——基于SUMO的伯克利开源项目Flow Project初探与拓展

后续拓展&#xff1a;要点初见&#xff1a;安装教程与二度拓展——基于SUMO的Flow Project&#xff08;附代码链接&#xff09; 通俗来讲&#xff0c;微观交通模型仿真就是从车辆个体的视角&#xff08;看动画&#xff09;进行交通流仿真&#xff0c;对车辆个体随时间、空间的…

爬取豆瓣电影TOP100

爬虫 首先我们在网站中打开我们要爬的网站 “http://maoyan.com/board/4” 这就是豆瓣高分电影前100的榜单. 然后我们点击f12&#xff0c;再刷新一次&#xff0c;就可以看到网页的基本信息了。 这时候我们来看一下第一部‘我不是药神中的代码信息。’ 一个dd节点为一个电影的…

2020 年软件设计师考试上午真题

2020 年软件设计师考试上午真题答案解析 1、在程序执行过程中&#xff0c;高速缓存(Cache) 与主存间的地址映射由&#xff08;D &#xff09;。 A、操作系统进行管理 B、存储管理软件进行管理 C、程序员自行安排 D、硬件自动完成 解:CACHE与主存地址映射由硬件完成…

基于LLVM的编译原理简明教程 (1) - 写编译器越来越容易了

基于LLVM的编译原理简明教程 (1) - 写编译器越来越容易了 进入21世纪&#xff0c;新的编程语言如雨后春笋一样不停地冒出来。需求当然是重要的驱动力量&#xff0c;但是在其中起了重要作用的就是工具链的改善。 2000年&#xff0c;UIUC的Chris Lattner主持开发了一套称为LLVM…

基于LLVM的编译原理简明教程: 写一个自己的编译器​

LLVM简介 进入21世纪&#xff0c;新的编程语言如雨后春笋一样不停地冒出来。需求当然是重要的驱动力量&#xff0c;但是在其中起了重要作用的就是工具链的改善。 2000年&#xff0c;UIUC的Chris Lattner主持开发了一套称为LLVM(Low Level Virtual Machine)的编译器工具库套件。…