Java期末考试题(个人押题版)

目录

前言

一、多线程改错题(20分)

二、Java语言的运用综合题(20分)

三、面向对象编程综合题(20分)

四、GUI界面设计综合题(20分)

五、使用GUI界面实现文件的读写(20分)

总结


前言

临近Java期末考试,不少同学反映不知道从何下手与复习,我们班老师对于期末考试题型知识点啥也不透露(真服了),还好其他班级老师比较给力,东打听西打听得到期末主要考的题型知识点,结合个人经验判断,大胆出一套押题卷,仅供参考与复习。(花了一上午总结的,要个一键三连不过分吧?嘿嘿)下面直接进入正题

一、多线程改错题(20分)

考点:实现多线程的两种方法、实现线程同步的方法、线程常用方法如睡眠、让步、优先级、获取正在运行的线程名、线程命名等、GUI消息对话框、警示对话框

设错点分析:导包错误、主类名与文件名是否一致、实现的接口是否匹配、是否实现接口里的抽象

方法、多线程的创建构造方法里面的参数是否缺少、线程是否启动、方法是否缺少类型、线程睡眠单位是ms、是否抛出与捕获相应的异常、主方法是否为静态、消息对话框......

考前模拟题如下:

Java期末考试题(个人押题版)_第1张图片

错误代码:


import java.swing.*;
import java.awt.*;
public class MyThread extends JFrame   implements Thread
{
    JTextField output;
    JLabel note;
    int i=0;
	public MyThread()
	{
		setTitle("多线程示例");
		output=new JTextField(10);
		output.setFont(new Font("黑体",Font.PLAIN,20));
		note=new JLabel("自增的数字:");
		setLayout(new FlowLayout());
		add(note);
		add(output);
	    setSize(380,150);
	    setVisible(true);
	   Thread  runner= new Thread( );
	    runner.Run();

	}
	public   run()
	{
		 	 while(true)
		 	  {
				try
				  {
					  Thread.sleep(500); //休眠0.5秒
					  output.setText( " i= "+(i++));
					  if(i=10)
					      JOptionPane.showDialog(null,"线程执行了"+i+"次","时间提醒",JOptionPane.INFORMATION_MESSAGE);
				  }
				  catch (IOException e) { }
		      }
	 }
	 public static void main(string arg[])
 	{
		new MyThread();
	}
}

正确代码:

import javax.swing.*;//导入包错误
import java.awt.*;
//主类名应该与文件名保持一致
public class Race extends JFrame   implements Runnable//应该实现Runnable接口来实现多线程
{
    JTextField output;
    JLabel note;
    int i=0;
	public Race ()
	{
		setTitle("多线程示例");
		output=new JTextField(10);
		output.setFont(new Font("黑体",Font.PLAIN,20));
		note=new JLabel("自增的数字:");
		setLayout(new FlowLayout());
		add(note);
		add(output);
	    setSize(380,150);
	    setVisible(true);
	   Thread  runner= new Thread(this);//创建线程时的构造参数里面target为提供线程体的对象或者对象名字
	    runner.start();//runner.Run(); 执行多线程应该是start()方法

	}
	public  void  run()//缺少方法类型
	{
		 	 while(i<=9)
		 	  {
				try
				  {
					  Thread.sleep(500); //休眠0.5秒
					  output.setText( " i= "+(i++));
					  //从0开始执行,到9共执行10
					  if(i==10){
						  JOptionPane.showMessageDialog(null,"线程执行了"+i+"次","时间提醒",JOptionPane.INFORMATION_MESSAGE);
					  }


				  }
				  //异常捕获错误,应该捕获异常终止
				  catch (InterruptedException e) {
					  e.printStackTrace();//捕获异常语句中未给出具体操作语句
					  }
		      }
	 }
	 public static void main(String arg[])//主方法里的形参类型应该为String类型
 	{
		new Race();
	}
}



二、Java语言的运用综合题(20分)

考点:Java基础知识的运用,数组,字符串、选择,判断、循环三大结构

这题类似小算法题,给出一个应用场景编程解决,应该不会太难的(送分)

例题1:韩信点兵

一支队伍,若3个一排,则队尾有a人(a<3),若5个一排,则队尾有b个(b<5) ,若7个一排,则队尾有c人(c<7)。现从键盘上输入a,b,c的值,输出满足该 要求的总人数的最小值。或者报告“无解”。已知总人数>=10但<100。

输入:2 1 6
输出:总人数(最小值)=41
又如:
输入:2 1 3
输出:无解

/*
第2题:韩信点兵
题目描述:一支队伍,若3个一排,则队尾有a人(a<3),若5个一排,则队尾有b个(b<5) ,若7个一排,则队尾有c人(c<7)。现从键盘上输入a,b,c的值,输出满足该 要求的总人数的最小值。或者报告“无解”。已知总人数>=10但<100。
输入:2 1 6
输出:总人数(最小值)=41
又如:
输入:2 1 3
输出:无解
考点:Java基础知识的运用,数组,选择,循环,判断结构
*/
import java.util.Scanner;
public class Line{
	public static void main(String args[]){
		boolean flag=false;
		int a=0,b=0,c=0,sum=0;
		Scanner sc=new Scanner(System.in);
		System.out.println("请分别输入a,b,c的值:");
		a=sc.nextInt();
		b=sc.nextInt();
		c=sc.nextInt();
		for(int i=10;i<100;i++){
			if(i%3==a&&i%5==b&&i%7==c){
				sum=i;
				flag=true;
				break;
			}
		}
		if(flag){
			System.out.println("总人数(最小值):"+sum);
		}else{
			System.out.println("无解");
		}
	}

}

Java期末考试题(个人押题版)_第2张图片

Java期末考试题(个人押题版)_第3张图片

 例题2:打印指定整数之前所有能被3整除的正整数,并按每5个为一行进行打印输出

要求体现面向对象的编程特性,即封装方法

import java.util.Random;
public class RandomDemo{
	public static void main(String args[]){
		Random ran=new Random();
		int n=ran.nextInt(101);
		System.out.println("随机生成的数 n="+n);
		System.out.println("\n1~"+n+"之间可以被3整除的数如下:");
		new RandomDemo().printNumber(n);
	}

	public void printNumber(int n){
		int []a=new int[100];
		int j=0,count=0;
		for(int i=1;i<=n;i++){
			if(i%3==0){
				a[j++]=i;
			}
		}
		for(int k=0;k

Java期末考试题(个人押题版)_第4张图片

三、面向对象编程综合题(20分)

考点:封装、继承、多态、接口类、抽象类、异常类

类似于我们的Java实验三,但是针对于考试而言,应该不会涉及到包的管理,即将父类、子类、测试类、异常类、接口类写在一个Java程序里,这样也便于老师批阅(纯属个人猜测,以考试为准

下面这是我当时做的Java实验二,子类可能有点多,但是考试的话,子类就要求一个即可,代码仅供参考,重点体会面向对象编程的三大特性以及异常处理机制的运用

import java.util.*;
//第1题:定义一个抽象的商品类
abstract class Commodity{
	//商品基本属性
	protected String comNumber;//商品号
	protected String comName;//商品名
	protected double comPrice;//商品价格
	protected String comProductor;//生产商
	protected int comStock;//库存量
	//构造方法01:无参构造
	Commodity(){};
	//构造方法02:有参构造
	Commodity(String comNumber,String comName,double comPrice,String comProductor,int comStock){
		this.comNumber=comNumber;
		this.comName=comName;
		this.comPrice=comPrice;
		this.comProductor=comProductor;
		this.comStock=comStock;
	}
	//修改商品价格
	public void changeComPrice(double price){
		comPrice=price;
	}
	//获取当前商品价格
	public double getComPrice(){
		return comPrice;
	}
	//获取商品名称
	public String getComName(){
		return comName;
	}
	public int getcomStock(){
		return comStock;
	}
	//重写toString方法
	public String toString(){
		return "商品信息如下:\n"+"商品号:"+comNumber+"\n商品名:"+comName
		+"\n商品价格:"+comPrice+"元"+"\n生产商:"+comPrice;
	}
}


//第2题:在抽象类的基础上,定义其两个子类:食品类与玩具类
//子类01:食品类
class Food extends Commodity{
	private String foodTime;//生产日期
	private String foodPeriod;//保质期
	private String foodMainPart;//主要成分
	private String foodStorage;//贮存方式
	Food(String comNumber,String comName,double comPrice,String comProductor,int comStock,String foodTime,String foodPeriod,String mainPart){
		super(comNumber,comName,comPrice,comProductor,comStock);
		this.foodTime=foodTime;
		this.foodPeriod=foodPeriod;
		this.foodMainPart=mainPart;
	}
	//set方法:设置属性值
	public void setFoodTime(String time){
		foodTime=time;
	}
	public void setFoodPeriod(String period){
		foodPeriod=period;
	}
	public void setFoodMainPart(String mainpart){
		foodMainPart=mainpart;
	}
	public void setFoodStorage(String storage){
		foodStorage=storage;
	}
	//get方法:返回属性值
	public double getFoodPrice(){
		return comPrice;
	}
	public String getFoodName(){
		return comName;
	}
	//重写父类的toString方法
		public String toString(){
			return "食品信息如下:\n"+"食品号:"+comNumber+"\n食品名:"+comName
			+"\n价格:"+comPrice+"元"+"\n生产商:"+comProductor+"\n生产日期:"+foodTime+
			"\n保质期:"+foodPeriod+"\n主要成分:"+foodMainPart+"\n贮存方式:"+foodStorage;
	}
}
//子类02:玩具类
class Toy extends Commodity{
	private String toyNumber;//型号
	private String toyMaterial;//材料
	private String toySecurity;//安全级别
	private String toyCareful;//注意事项
	Toy(String comNumber,String comName,double comPrice,String comProductor,int comStock,String toyNumber,String toyMaterial,String toySecurity){
		super(comNumber,comName,comPrice,comProductor,comStock);
		this.toyNumber=toyNumber;
		this.toyMaterial=toyMaterial;
		this.toySecurity=toySecurity;
	}
	//set方法:设置属性值
	public void setToyNumber(String number){
		toyNumber=number;
	}
	public void setToyMaterial(String material){
		toyMaterial=material;
	}
	public void setToySecurity(String security){
		toySecurity=security;
	}
	public void setToyCareful(String careful){
		toyCareful=careful;
	}
	//get方法:返回属性值
	public double getToyPrice(){
		return comPrice;
	}
	public String getToyName(){
		return comName;
	}
	//重写父类的toString方法
		public String toString(){
			return "玩具信息如下:\n"+"生产号:"+comNumber+"\n玩具名:"+comName
			+"\n价格:"+comPrice+"元"+"\n生产商:"+comProductor+"\n玩具型号:"+toyNumber+
			"\n主要材料:"+toyMaterial+"\n安全级别:"+toySecurity+"\n注意事项:"+toyCareful;
	}
}


//第3题:自定义顾客类,实现相关功能
class Customer{
	private String name;//姓名
	private String gender;//性别
	private int age;//年龄
	private double discount;//所属折扣
	private float balance;//账户余额
	Customer(String name,String gender,float balance){
		this.name=name;
		this.gender=gender;
		this.balance=balance;
	}
	//用生日来计算年龄
	public void setage(String birth){
		Calendar myCal=Calendar.getInstance();
		myCal.setTime(new Date());
		age=myCal.get(Calendar.YEAR)-Integer.parseInt(birth.substring(0,4));
	}
	//按年龄分段打折
	public void setdiscount(){
		switch(age/10){
			case 0:discount=0.5;break;//10岁以下的儿童半价
			case 1:discount=0.8;break;//10-20岁的人打八折
			case 2:
			case 3:
			case 4:
			case 5:discount=0.9;break;//20-50的人打九折
			default:discount=0.5;break;//60岁及以上的老人半价
		}
	}
	//设置折扣
	public void setbalance(float sum){
		   balance-=sum;
	}
	public double getdiscount(){
		return discount;
	}
	public float getbalance(){
		return balance;
	}
	public float shop(Food food,Toy toy,int num1,int num2){

		float sum=(float)((food.getFoodPrice()*num1+toy.getToyPrice()*num2)*discount);
		return sum;
	}
	public String toString(){
		return "顾客基本信息如下:\n"+"姓名:"+name+"\n性别:"+gender+"\n年龄:"+age+"岁"+"\n账户余额:"+balance+"元";
	}

}
//自定义库存异常类
class StockException extends Exception{
	//System.out.println("库存不足!");
	public StockException(String str){
		super(str);
	}
}
//自定义余额异常类
class BalanceException extends Exception{
	public BalanceException(){
		System.out.println("对不起,您的账户余额为0元!无法完成支付!");
	}
}

//测试类
public class TestCommodity02{
	public static void main(String args[])throws StockException,BalanceException {
		Food food = new Food("SC12432070","会呼吸的蛋奶饼",12.50,"连云港市大学士食品有限公司",10,"2022年2月27日","60天","小麦粉、鸡蛋、饮用水、酵母、白砂糖等");
		food.setFoodStorage("请置于阴凉干燥处,避免阳光直射!");//设置食品的贮存方式属性
		System.out.println(food);//打印输出食品全部信息
		System.out.println("修改价格后:");
		food.changeComPrice(20.00);
		System.out.println("食品:"+food.getFoodName()+"\n价格调整为:"+food.getFoodPrice()+"元");
		System.out.println("---------------------------------------------------------");//分割线
		Toy  toy = new Toy("SX32409078","遥控仿真电子鞭炮",146.50,"义乌市恒派工艺品有限公司",5,"充电款","核心主板、电池、LED灯、喇叭、塑料保护壳等","一级");
		toy.setToyCareful("电子鞭炮在“燃放”前后有触电危险,请勿触碰炸头!");//设置玩具的注意事项属性
		System.out.println(toy);
		System.out.println("修改价格后:");
		toy.changeComPrice(140.50);
		System.out.println("玩具:"+toy.getToyName()+"\n价格调整为:"+toy.getToyPrice()+"元");
		System.out.println("--------------------------------------------------------");
		Scanner input=new Scanner(System.in);
		Customer c1=new Customer("Eric","男",500);
		System.out.print("顾客您好!\n活动期间本店采取分年龄段打折的活动规则\n请您以XXXXXXXX的格式输入您的生日:");
		String birthday=input.next();
	    c1.setage(birthday);//计算年龄
	    c1.setdiscount();//计算折扣
		System.out.println(c1);//输出顾客基本信息
		System.out.println("--------------------------------------------------------");
		System.out.println("本店库存:\n食品:"+food.getFoodName()+"   单价:"+food.getFoodPrice()+"元/袋"+"  库存量:"+food.getcomStock()+"袋"
		+"\n玩具:"+toy.getToyName()+" 单价:"+toy.getToyPrice()+"元/个"+" 库存量:"+toy.getcomStock()+"个");
		System.out.print("请分别输入购买食品与玩具的数量:");
		int num1=input.nextInt();int num2=input.nextInt();
		System.out.println("--------------------------------------------------------");
		//异常处理
		if(num1<=food.getcomStock()||num2<=toy.getcomStock()){
			float sum=c1.shop(food,toy,num1,num2);
			System.out.println("顾客购买信息:\n"+"食品:"+num1+"袋 "+food.getFoodName()+"\n玩具:"+num2+"个 "+toy.getToyName()+"\n享受折扣:"+c1.getdiscount()*10+"折");
			c1.setbalance(sum);
		    System.out.println("总消费额:"+sum+"元");
		}
		else{
			throw new StockException("对不起,库存量不足!");
		}
		if(c1.getbalance()<0)
		    throw new BalanceException();
		else{
		     System.out.println("您的账户余额为:"+c1.getbalance()+"元"+"\n欢迎您下次光临本店!");
		}
	}
}

Java期末考试题(个人押题版)_第5张图片

Java期末考试题(个人押题版)_第6张图片

四、GUI界面设计综合题(20分)

考点:Awt或者Swing组件的使用,以及事件响应处理,消息对话框的使用,实现交互功能

出题思路:给一个图形界面,然后要求实现组件的事件响应(大概率是按钮)

建议:考试机房有NetBeans IDE8.2和TextPad两大编译器,个人推荐如果对组件很熟悉的话,任选其一使用即可。如果对组件不熟悉,那么NetBeans的可视化图形界面设计就是救星了,只需要拖拽组件即可完成界面的设计,此时应该能拿到一半的分数了。下面就是事件响应部分代码的编写,这个只能纯手写了,只不过NetBeans为我们少了一个判断事件源的代码,直接右键组件添加事件响应即可。

示例:

图形界面如下,请完成该界面的设计,实现点击" 确认提交"按钮将调查内容显示输出在下方文本域中,注意输出的格式

Java期末考试题(个人押题版)_第7张图片

/*
  Theme:第四章GUI图形界面设计综合案例
  Plan:综合熟练运用各大swing组件以及各种类型的事件监听器
*/
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class VariousGUI extends JFrame implements ActionListener {
	 JLabel lab1,lab2,lab3,lab4,lab5,lab6;//标签组件
	 JTextField tex1;//文本框组件
	 JComboBox jcb1;//下拉列表组件
	 JButton jbt1;//按钮
	 JRadioButton jrb1,jrb2,jrb3,jrb4,jrb5,jrb6;//单选按钮组件
	  ButtonGroup bg;//单选按钮组
	 JCheckBox cb1,cb2,cb3,cb4;//复选框组件
	 JTextArea jta1;//文本域组件
	 //JScrollPane scrollpane;//具有滚动条的面板
	 JPanel pan1,pan2,pan3,pan4,pan5,pan6;//面板组件
	 public VariousGUI(String str){
		 super(str);//调用父类构造方法进行窗体标题的设置
		  setLayout(new GridLayout(6,1));//设置布局格式为网格布局,6行1列,每行对应与一个面板
		 //创建面板对象
		 pan1=new JPanel();
		 pan2=new JPanel();
         pan3=new JPanel();
         pan4=new JPanel();
         pan5=new JPanel();
         pan6=new JPanel();
         //scrollpane=new JScrollPane();
         //scrollpane.setBounds(0,187,591,98);
		 lab1=new JLabel("调查报告");
		 lab1.setFont(new Font("黑体",Font.BOLD,30));//设置字体型号与大小

		 lab2=new JLabel("姓名:");
		 tex1=new JTextField(10);

		 lab3=new JLabel("班级:");
		 lab3.setForeground(Color.RED);//设置字体为红色

		 String str1[]={"软嵌202","软嵌201","计算机201","网络201","网络202","数据201","计嵌201"};
	     jcb1=new JComboBox(str1);//以str1数组内容为初始值创建组合框

	     lab4=new JLabel("性别:");
	     jrb1=new JRadioButton("男");//创建一个单选按钮对象,并且选项内容为“男”
	     jrb2=new JRadioButton("女");
	     bg=new ButtonGroup();//创建一个按钮组,将两个单选按钮加入到按钮组中去
	     bg.add(jrb1);
	     bg.add(jrb2);
	     //jrb1.setSelected(true);//设置单选按钮1的状态为选中状态

	     lab5=new JLabel("爱好:");
	     lab5.setForeground(Color.BLUE);
	     lab5.setFont(new Font("宋体",Font.BOLD,15));

         cb1=new JCheckBox("美食");
         cb2=new JCheckBox("运动");
         cb3=new JCheckBox("音乐");
         cb4=new JCheckBox("Coding");

         lab6=new JLabel("年级:");
         lab6.setForeground(Color.GREEN);
         lab6.setFont(new Font("楷体",Font.BOLD,18));

         jrb3=new JRadioButton("大一");
         jrb4=new JRadioButton("大二");
         jrb5=new JRadioButton("大三");
         jrb6=new JRadioButton("大四");

         jta1=new JTextArea(20,30);//创建一个三行三十列的文本域
         //jta1.setBounds(0,187,591,98);
         //scrollpane.setViewportView(jta1);

         jbt1=new JButton("确认提交");
         jbt1.setFont(new Font("隶书",Font.BOLD,20));
         jbt1.addActionListener(this);//将按钮注册监听器
         //将各个面板的组件添加到相应面板中
		 pan1.add(lab1);
		 pan2.add(lab2);
		 pan2.add(tex1);
		 pan2.add(lab3);
		 pan2.add(jcb1);
		 pan2.add(lab4);
		 pan2.add(jrb1);
		 pan2.add(jrb2);
		 pan3.add(lab5);
		 pan3.add(cb1);
		 pan3.add(cb2);
		 pan3.add(cb3);
		 pan3.add(cb4);
		 pan4.add(lab6);
		 pan4.add(jrb3);
		 pan4.add(jrb4);
		 pan4.add(jrb5);
		 pan4.add(jrb6);
		 pan5.add(jta1);
		 pan6.add(jbt1);
		 //将各个面板添加到窗体中
		 add(pan1);
		 add(pan2);
		 add(pan3);
		 add(pan4);
		 add(pan5);
		 add(pan6);
		 //add(scrollpane);
		 //设置窗体大小
		 setSize(650,800);
		 //设置窗体为可见
		 setVisible(true);
		 //设置窗体居中显示
		 setLocationRelativeTo(null);
		 //设置窗体关闭响应
		 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	 }
	 public void actionPerformed(ActionEvent e){
		 String str="调查结果如下:\n";
		 if(e.getSource()==jbt1){
			 str+="姓名:"+tex1.getText()+"\n班级:"+jcb1.getSelectedItem();
			 if(jrb1.isSelected())str=str+"\n性别:"+jrb1.getText()+"\n爱好:";
			 if(jrb2.isSelected())str=str+"\n性别:"+jrb2.getText()+"\n爱好:";
			 if(cb1.isSelected())str=str+cb1.getText()+"、";
			 if(cb2.isSelected())str=str+cb2.getText()+"、";
			 if(cb3.isSelected())str=str+cb3.getText()+"、";
			 if(cb4.isSelected())str=str+cb4.getText();
			 if(jrb3.isSelected())str=str+"\n年级:"+jrb3.getText();
			 if(jrb4.isSelected())str=str+"\n年级:"+jrb4.getText();
			 if(jrb5.isSelected())str=str+"\n年级:"+jrb5.getText();
			 if(jrb6.isSelected())str=str+"\n年级:"+jrb6.getText();
			 jta1.setText(str);
		 }

	 }
     public static void main(String args[]){
		 new VariousGUI("GUI图形界面综合案例");
	 }
}

五、使用GUI界面实现文件的读写(20分)

考点:IO流、文件的读写操作、GUI界面

设计一个文本框来输入读取或者写入的文件名称,文本域来录入或者显示内容,按钮“录入”和“读取”分别实现对应的功能

import java.io.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
/*
题目描述:设计一个文本框来输入读取或者写入的文件名称,文本域来录入或者显示内容,按钮“录入”和“读取”分别实现对应的功能
考点:文件操作与GUI界面设计结合 20分
参考文章:http://t.csdn.cn/yWrXn
押题人:gy
*/
public class FileWriteDemo extends JFrame implements ActionListener{
	JLabel jbl1;
	JTextArea jta1;
	JTextField jtf1;
	JButton jbt1,jbt2;
	//设计GUI界面
	public FileWriteDemo(){
		setTitle("文件的读写");
		jbl1=new JLabel("写入或者读取的文件名:");
		jtf1=new JTextField(16);
		jta1=new JTextArea(20,30);
		jbt1=new JButton("录入");
		jbt2=new JButton("读取");
		jbt1.addActionListener(this);
		jbt2.addActionListener(this);
		//添加组件
		add(jbl1);
		add(jtf1);
		add(jta1);
		add(jbt1);
		add(jbt2);
		setLayout(new FlowLayout());//流式布局
		setSize(400,500);
		setVisible(true);
		setLocationRelativeTo(null);//设置窗体居中
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置默认窗体关闭
	}
	public void actionPerformed(ActionEvent e){
		//录入功能
		if(e.getSource()==jbt1){
			try{
				String filename=jtf1.getText();//获取要写入内容的文件名
				String text=jta1.getText();//获取要录入的内容
				File f=new File(filename);//创建文件对象
				FileOutputStream fos=new FileOutputStream(f);//创建字节输出流
				OutputStreamWriter osw=new OutputStreamWriter(fos,"UTF-8");//创建处理流,将字节输出流转换成字符输出流,并指定录入编码方式为UTF-8
				BufferedWriter bw=new BufferedWriter(osw);//创建缓冲流,调用其write()方法进行文件写入操作
				bw.write(text);//将字符串写入指定文件
				//关闭流
				bw.close();
				osw.close();
			    fos.close();
			}catch(IOException e1){
				e1.printStackTrace();
			}
			JOptionPane.showMessageDialog(null,"录入成功!");
		}
		//读取功能
		if(e.getSource()==jbt2){
			try{
                String filename=jtf1.getText();//获取要读取内容的文件名
                String line="";//初始化为空字符串
                File f=new File(filename);//创建文件对象
				FileInputStream fis=new FileInputStream(f);//创建字节输入流
				InputStreamReader isw=new InputStreamReader(fis,"UTF-8");//创建处理流,将字节输入流转换成字符输入流,并指定读取编码方式为UTF-8
				BufferedReader br=new BufferedReader(isw);//创建缓冲流,调用其readLine()方法进行逐行读取
				while((line=br.readLine())!=null){
					jta1.append(line);//调用append()方法向文本域中进行追加录入
				}
				//关闭流
				br.close();
				isw.close();
			    fis.close();
			}catch(IOException e2){
				e2.printStackTrace();
			}
			JOptionPane.showMessageDialog(null,"读取成功!");
		}
	}
	public static void main(String args[]){
		new FileWriteDemo();
	}
}

Java期末考试题(个人押题版)_第8张图片

Java期末考试题(个人押题版)_第9张图片

总结

考试时间两个小时,一道改错题,四道编程题,每题20分。

整体思路:做题思路是先整体浏览题目,先挑自己拿手的熟悉的题目做起,建立起自信心,由易到难才是正确的考试思路。

改错题:个人觉得结合多线程的话,会出得稍难一些,10个空的话,应该6,7个是送分的,后面几个实在填不出来也不要过于纠结,直接下一题。如果在改错题浪费太多时间导致后面四道题目来不及做完,得不偿失!

编程题:编程题不会很难,第二题应该是送分的得把握住,从第三题面向对象编程综合题开始有些难度,题目要求一定很多,注意看清楚,比如让你设计父类为抽象类,设计一个接口类、自定义异常类,成员变量与成员方法的访问权限等等。编程题不求每一题完美敲出来,那是针对对Java十分熟练的同学而言,只要敲出80%,你已经整体上成功了,最后剩余半小时去修改那剩下的20%,即Debug过程

关于开卷:其实个人觉得,要减少对书本的依赖,才能提高整体做题速度,在某种程度上开卷能够翻书是一种干扰,因为很多人都不知道知识点在哪,翻半天,再开始思考,一道编程题写30分钟都有可能,显然是很浪费时间的。所以,最好的方法就是充分地复习,减少翻书的次数,提高解题效率。

关于编译器:

考试机房安装了NetBeans IDE8.2和TextPad,老师已经足够好了,GUI界面设计综合题可以直接使用NetBeans做,大大节省了时间,因为可视化界面设计实在太香啦!其它题目再TextPad里面做即可,小巧精悍,为练习考试而生!

关于考试平台:

本次由于考虑到未返校同学,所以平台为超星平台,所以第一步先打开浏览器连接校园网,再登录超星平台,打开到对应的考试界面,一定要有提前量,否则开考了你还没登录,直接会影响你的考试心情,甚至影响你的心态,这个细节点一定一定不能忘记!

总而言之,胆大心细,注意时间,相信自己!

Java期末考试题(个人押题版)_第10张图片

你可能感兴趣的:(#,Java,Java,期末考试)