已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JAVA课程实验报告学院:吉林大学计算机科学与技术学院专业:计算机科学与技术专业 课程科目:java 课程实验 学号:21140905 姓名: 指导教师: 实验1. 实验内容: P19 实验4 (10分) 实验构思:IO输出的简单应用 实验代码:package T_1;public class Printpublic static void main(String args)System.out.print(name:ydw.nage:20.nheight:174cm.nweight:53kg.);实验截图:Eclipse 环境:Cmd 控制台实验2.实验内容: P41 实验 (10分)实验构思:水仙花数的简单算法,n=100*a+10*b+c, n=a*a*a+b*b*b+c*c*c,n为水仙花数实验代码:package T_2;public class Narcissisticpublic static void main(String args)int a=0,b=0,c=0;for(int i=100;i1000;i+)a=i/100;b=i/10%10;c=i%10;if(i=(a*a*a)+(b*b*b)+(c*c*c)System.out.println(i+=+a+*+a+*+a+b+*+b+*+c+*+c+*+c);实验结果:实验3.实验内容: 创建一个类,此类中包含多个静态成员变量和普通成员变量(变量的类型可以自定义),使用不同的方法进行初始化,同时需要展示出变量初始化的顺序。实验构思:静态初始化块static 初始化块构造器ClassName实验代码:package T_3;class StaticValueTeststatic int staticVal=0;private int val;/静态块初始化staticSystem.out.println(静态初始化块:- staticVal=+staticVal+ (初始化为0);/初始化块System.out.println(变量初始化块:- val=+val+ (初始化为0);/构造函数初始化public StaticValueTest(int val,int staticVal)StaticValueTest.staticVal=staticVal;this.val=val;System.out.println(构造函数初始:- staticVal=+staticVal+ val=+val);public int getVal()return val;public void setVal(int val)this.val=val;public class StaticValueSuppressWarnings(static-access)public static void main(String args)int buffuValue=0;StaticValueTest.staticVal=1;buffuValue=StaticValueTest.staticVal;System.out.println(类名访问初始:- staticVal=+buffuValue);StaticValueTest st=new StaticValueTest(1,2);st.staticVal=2;buffuValue=st.staticVal;System.out.println(对象实例初始:- staticVal=+buffuValue);实验结果:实验4实验内容:P111 实验 (10分).实验构思: 抽象出int calculateTime(int A,int B,int C);方法放在Common接口中,用相应的类去具体实现这个这个方法。.实验代码:/接口package T_4;public interface Commanint calculateTime(int A,int B,int C);/Plane类package T_4;public class Planeimplements Commanpublic Plane()public int calculateTime(int A, int B, int C)return A+B+C;/Car007类package T_4;public class Car007 implements Commanpublic int calculateTime(int A, int B, int C)return A*B/C;/Ship类package T_4;public class Ship implements Commanpublic Ship()public int calculateTime(int A, int B, int C)/ TODO 自动生成的方法存根return (A*B)+C;/ComputeTime类package T_4;public class ComputeTimepublic static void main(String args)if(args.length!=4)System.out.print(命令行参数错误.);System.exit(0);else try/创建接口实例(注意加包名)Comman cm= (Comman) Class.forName(T_4.+args0).newInstance();/数值转换int A=Integer.parseInt(args1);int B=Integer.parseInt(args2);int C=Integer.parseInt(args3);/函数调用及输出System.out.println(args0+ needs: + cm.calculateTime(A,B,C);/异常捕获 catch (InstantiationException e)/ TODO 自动生成的 catch 块e.printStackTrace(); catch (IllegalAccessException e)/ TODO 自动生成的 catch 块e.printStackTrace(); catch (ClassNotFoundException e)/ TODO 自动生成的 catch 块e.printStackTrace();实验结果:Eclipse环境:Cmd控制台:实验5.实验内容:P111 实验 (10分)实验构思:Logo的导入,按钮的添加,字体的设置,及事件响应,四则混合运算实现。图形界面的难点在于布局器的使用,底层设置了布局则无法继续改变控件大小,两种解决方式:第一种调用控件方法sePreferredSize(new Dimension();第二种将底层布局期设置为null。四则混合运算通过操作数:optNum1,optNum2,optNumBuf,操作符:operation,optBuf来实现。比较operation和optBuf的运算优先级,若operation的优先级高,则optNum1optNum1 operation optNum2,否则optNum2optNum2 optBuf optBuf 实验代码:package T_5;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.Dimension;import java.awt.Font;import java.awt.GridLayout;import java.awt.Image;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.WindowConstants;class CalculaterUI extends JFrame implements ActionListener/* * */private static final long serialVersionUID = 1L;private JTextField textfield;private String buttonName=7,8,9,/, 4,5,6,*, 1,2,3,-, 0,.,=,+;private JButton button;private JPanel jp1,jp2;private String str;/表达式String operation,optBuf;/操作String optNum1,optNum2,optNumBuf;/操作数public CalculaterUI()/初始化super(calculater);/设置图标tryFile img=new File(src/img/logo+.png);Image image=ImageIO.read(img);this.setIconImage(image); catch (IOException e)System.out.println(logo 导入失败.);/ TODO 自动生成的 catch 块e.printStackTrace();str=;operation=optBuf=null;optNum1=optNum2=optNumBuf=null;Container container=getContentPane();container.setLayout(new BorderLayout();jp1 =new JPanel();jp1.setLayout(new GridLayout(1,1);textfield=new JTextField();textfield.setFont(new Font(宋体,Font.CENTER_BASELINE, 25);/底层设置了布局要继续改变控件大小的方法:sePreferredSize(new Dimension();jp1.setPreferredSize(new Dimension(0,40);/jp1.setBounds(0, 0, 400, 30);jp1.add(textfield);container.add(jp1,BorderLayout.NORTH);jp2=new JPanel(new GridLayout(4,4,4,4);button=new JButtonbuttonName.length;for(int i=0;ibuttonName.length;i+)/设置按钮颜色及字体buttoni=new JButton(buttonNamei);buttoni.setFont(new Font(Conlas,Font.BOLD,25);buttoni.setForeground(new Color(255,43,0);buttoni.addActionListener(this);jp2.add(buttoni);jp2.setBackground(new Color(139,137,137);/jp2.setBounds(0,30,300,300-60);container.add(jp2,BorderLayout.CENTER);setBounds(800,300,250,250);setResizable(false);setVisible(true);setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);public void actionPerformed(ActionEvent e)for(int i=0;ibuttonName.length;i+)if(e.getSource()=buttoni)if(i%4!=3&i13)/0-9 ./刷新optNum1 optNum2if(optNum1=null&optNum2=null)str=;textfield.setText(str);if (optNum1=null | operation=null)/第一个操作数if(optNum1=null)optNum1=buttonNamei;else/超过两位数optNum1+=buttonNamei;else if(optNum2=null|(optNum1!=null&operation!=null&optBuf=null)/第二个操作数if(optNum2=null)optNum2=buttonNamei;elseoptNum2+=buttonNamei;else if(optBuf!=null)/第三个操作数if(optNumBuf=null)optNumBuf=buttonNamei;elseoptNumBuf+=buttonNamei;str+=buttonNamei;textfield.setText(str);else if(i%4=3)/ 操作符 + - * / 3+2-5*0if(optNum2=null)/第一步操作: 第二个操作数为空(不用operation=null是因为operation输入了一次,可能再次输入)if(operation=null)operation=buttonNamei;str+=operation;else/再次输入改变operation操作符operation=buttonNamei;str=str.replaceAll(*/+-$, operation);/替换原有最后一个的操作符textfield.setText(str);else/第二步操作if(optBuf=null)optBuf=buttonNamei;if(isPriority(operation,optBuf)/左边先算optNum1=+caculaterResult(Double.parseDouble(optNum1),operation,Double.parseDouble(optNum2);System.out.println(optNu1 is here:+ optNum1);operation=optBuf;str+=optBuf;optBuf=null;optNum2=null;textfield.setText(str);else/右边先算str+=optBuf;textfield.setText(str);/第二步运算级高于第一步,待第二个操作数输入后进行计算操作else /原来的第二个运算高于第一个String newOptBuf=null;newOptBuf=buttonNamei;/先记录一下第三个运算/先进性第二步运算optNum2=+caculaterResult(Double.parseDouble(optNum2),optBuf,Double.parseDouble(optNumBuf);optBuf=newOptBuf;optNumBuf=null;/进行第一步和第二步(原第三步)的优先级判断if(isPriority(operation,optBuf)/进行第一步运算optNum1=+caculaterResult(Double.parseDouble(optNum1),operation,Double.parseDouble(optNum2);operation=optBuf;optBuf=null;optNum2=null;str+=newOptBuf;textfield.setText(str);else if(buttonNamei=.)/./一个数只能有一个小数点,正则检验String regex=0-9+;java.util.regex.Pattern pattern=java.util.regex.Ppile(regex);java.util.regex.Matcher matcher;String result=null;if(operation=null) matcher=pattern.matcher(optNum1);result=matcher.matches()=true? . :;optNum1+=result;else if(optBuf=null)matcher=pattern.matcher(optNum2);result=matcher.matches()=true? . :;optNum2+=result;elsematcher=pattern.matcher(optNumBuf);result=matcher.matches()=true? . :;optNumBuf+=result;/str+=.;str+=result;textfield.setText(str);else if(buttonNamei=)str+=;textfield.setText(str);if(optNum2!=null&optNum2=0)str=除0无效.;else if(optNum1=null|optNum2=null|operation=)str=操作有误.;elseif(optBuf!=null)optNum2=+caculaterResult(Double.parseDouble(optNum2),optBuf,Double.parseDouble(optNumBuf);optBuf=null;if(optNum2=null)optNum2=0;double result=caculaterResult(Double.parseDouble(optNum1),operation,Double.parseDouble(optNum2);/(int)result=result?(int)result:resultstr+=String.valueOf(result);System.out.println(表达式+str);System.out.print(optNum1+operation+optNum2);System.out.println( result:+result);/将运算结果输出后刷新操作数及运算符textfield.setText(str);optNum1=optNum2=null;operation=null;private double caculaterResult(double a, String operate,double b)double result=0;switch(operate)case +:result= a+b;break;case -:result= a-b;break;case *:result= a*b;break;case /:result= a/b;return result;/判断操作符优先级,左边的先算则返回trueprivate boolean isPriority(String opt1, String opt2)if( (opt1=+|opt1=-)&(opt2=+|opt2=-)|(opt1=*|opt1=/)&(opt2=*|opt2=/)|(opt1=*|opt1=/)&(opt2=+|opt2=-) )return true;elsereturn false;public class Calculater public static void main(String args)new CalculaterUI();实验结果: 实验6 实验内容:P140 实验2 (10分) 实验构思: 异常的使用及自定义异常。 实验代码:/自动忽略非整数package T_6;import java.util.InputMismatchException;import java.util.Scanner;public class Sumpublic static void main (String args)System.out.println(please input mumber:);SuppressWarnings(resource)Scanner sc =new Scanner(System.in);int ival=0,s=0;dotryival=0;ival=sc.nextInt();s+=ival; catch (InputMismatchException e)System.out.println(sc.next()+-is not a integer.);/刷新缓存while(ival!=999);System.out.print(sum-+s);/负数产生异常,不进行累加package T_6;import java.util.InputMismatchException;import java.util.Scanner;class MyException extends Exception/* * */private static final long serialVersionUID = 1L;private int exceptionType;public MyException(String message, int exceptionType)super(message);this.exceptionType=exceptionType;public int getException()return exceptionType;public class minusExceptionpublic static void main (String args)throws InputMismatchExceptionSystem.out.println(please input number:);SuppressWarnings(resource)Scanner sc =new Scanner(System.in);int ival=0,s=0;dotryival=0;ival=sc.nextInt();tryisMinus(ival);s+=ival; catch (MyException e)/ TODO 自动生成的 catch 块/e.printStackTrace();System.out.print(ival+-is a minus.);catch(Exception e)System.out.print(sc.next()+- is not a integer.);while(ival!=999);System.out.print(sum-+s);public static boolean isMinus(int tmp) throws MyExceptionif(tmp0)throw new MyException(tmp+ is a minus.,3);return tmp0?true:false;实验结果实验7 实验内容编写一个英文词频统计的程序。统计时不区分大小写,忽略所有的数字和标点符号。要求能处理普通的txt文本和html文本。在处理html文本时,要求过滤掉所有的html标签。 (20分)实验构思:用HashMa来统计每个单词的出行的次数,用正则表达式来去除无用信息从而匹配到正确的单词。为了提高IO读取效率,采用按行读取的方法,对每一行进行处理。实验代码:package T_7;import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.util.HashMap;import java.util.Iterator;import java.util.Locale;import java.util.Map;import java.util.Set;import java.util.regex.Matcher;import java.util.regex.Pattern;class WordCountprivate Map map;public WordCount()map=new HashMap();public void countWord(String fileName)tryFileReader fr = new FileReader(fileName);SuppressWarnings(resource)BufferedReader bufr=new BufferedReader(fr);String line=null;while(line=bufr.readLine()!=null)regexCheck(line); catch (IOException e)/ TODO 自动生成的 catch 块e.printStackTrace();private void regexCheck(String tmp)String regex;Pattern pattern;Matcher matcher;boolean result;/regex=$;/匹配正反标签 regex=+;pattern=Ppile(regex);matcher=pattern.matcher(tmp);result=matcher.find();while(result)tmp=matcher.replaceAll();result=matcher.find();/*regex=+srcs*=s*(+)*$;/匹配pattern=Ppile(regex);matcher=pattern.matcher(tmp);result=matcher.find();while(result)tmp=matcher.replaceAll();result=matcher.find();*/regex=u4E00-u9FA5+;/去中文pattern=Ppile(regex);matcher=pattern.matcher(tmp);result=matcher.find();while(result)tmp=matcher.replaceAll();result=matcher.find();regex=ba-zA-Z+b;/匹配单词pattern=Ppile(regex);matcher=pattern.matcher(tmp);result=matcher.find();String word=null;Integer count=null;/关键代码在这里while(result)/将第一个匹配的子串置为空,返回修改后的总的字符串tmp=matcher.replaceFirst();/获取刚才匹配的子串word=matcher.group();/将word放入到map中word=word.toLowerCase(Locale.ENGLISH);if(count=map.get(word)=null)map.put(word, 1);elsemap.put(word, count+1);/从新匹配matcher=pattern.matcher(tmp);result=matcher.find();public void printInfo()SetMap.Entry set=map.entrySet();IteratorMap.Entry it=set.iterator();Map.Entry entry=null;while(it.hasNext()entry=it.next();System.out.println(entry.getKey()+ - +entry.getValue();public class WordDemopublic static void main(String args)WordCount wc=new WordCount();wc.countWord(百度一下,你就知道.htm);/wc,countWord(“text.txt”);wc.printInfo(); 实验结果:测试文本:(1) text.txtAA AA 发生 aa aa ,.,.c w sd (2) 百度一下,你就知道.htm截图一部分如下:实验8 实验内容:P231 实验 (20分) 实验构思:用Runnable接口的实例去创建五个线程,用一个rlock锁来实现信息的同步,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB 27897-2025A类泡沫灭火剂
- 2025广东省云浮市“百万英才汇南粤”招聘教育人才19人(华南农业大学专场)考试笔试备考试题及答案解析
- 2025年萍乡市人民医院招聘编外人员(第三批)4人笔试考试参考试题及答案解析
- 2025年潍坊市技师学院公开招聘高层次、高技能人才(10人)考试笔试模拟试题及答案解析
- 2025年台州湾新区海虹街道办事处人员招聘2人笔试考试备考试题及答案解析
- 2025年四季度浙江台州市市直事业单位选聘工作人员(四)考试笔试模拟试题及答案解析
- 2025年甘肃省兰州新区综合保税区开发建设有限公司招聘财务工作人员笔试考试参考试题及答案解析
- 2026广东深圳市事业单位集中招聘高校毕业生658人(教师岗6人)笔试考试参考试题及答案解析
- 2026中国网安校园招聘考试笔试参考题库附答案解析
- 2026广东省高州市赴华南师范大学现场招聘教师98人考试笔试备考试题及答案解析
- 秋冬驾驶人安全培训课件
- 七年级上册历史知识点考点梳理背默清单
- 投资台球室合伙合同范本
- GB/T 29730-2025冷热水用分集水器
- 空调基本知识培训课件
- 2024-2025学年北京市海淀区七年级下英语期末考试题(含答案和音频)
- 智算中心异构计算资源协同与优化方案
- 工会经费审计课件
- 电焊外包安全管理协议合同
- 智能化产品开发-洞察及研究
- 臀大肌康复训练
评论
0/150
提交评论