吉林大学JAVA课程实验报告.docx
- 文档编号:17566478
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:41
- 大小:145.30KB
吉林大学JAVA课程实验报告.docx
《吉林大学JAVA课程实验报告.docx》由会员分享,可在线阅读,更多相关《吉林大学JAVA课程实验报告.docx(41页珍藏版)》请在冰点文库上搜索。
吉林大学JAVA课程实验报告
JAVA课程实验报告
学院:
吉林大学计算机科学与技术学院
专业:
计算机科学与技术专业
课程科目:
java课程实验
学号:
********
姓名:
指导教师:
实验1.
<1>实验内容:
P19实验4(10分)
<2>实验构思:
IO输出的简单应用
<3>实验代码:
packageT_1;
publicclassPrint
{
publicstaticvoidmain(String[]args)
{
System.out.print("name:
ydw.\nage:
20.\nheight:
174cm.\nweight:
53kg.");
}
}
<4>实验截图:
Eclipse环境:
Cmd控制台
实验2.
<1>实验内容:
P41实验(10分)
<2>实验构思:
水仙花数的简单算法,n=100*a+10*b+c,n=a*a*a+b*b*b+c*c*c,n为水仙花数
<3>实验代码:
packageT_2;
publicclassNarcissistic
{
publicstaticvoidmain(String[]args)
{
inta=0,b=0,c=0;
for(inti=100;i<1000;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);
}
}
}
}
<4>实验结果:
实验3.
<1>实验内容:
创建一个类,此类中包含多个静态成员变量和普通成员变量(变量的类型可以自定义),使用不同的方法进行初始化,同时需要展示出变量初始化的顺序。
<2>实验构思:
静态初始化块static{}>初始化块{}>构造器ClassName{}
<3>实验代码:
packageT_3;
classStaticValueTest
{
staticintstaticVal=0;
privateintval;
//静态块初始化
static{
System.out.println("静态初始化块:
->staticVal="+staticVal+"(初始化为0)");
}
//初始化块
{
System.out.println("变量初始化块:
->val="+val+"(初始化为0)");
}
//构造函数初始化
publicStaticValueTest(intval,intstaticVal)
{
StaticValueTest.staticVal=staticVal;
this.val=val;
System.out.println("构造函数初始:
->staticVal="+staticVal+"val="+val);
}
publicintgetVal(){returnval;}
publicvoidsetVal(intval){this.val=val;}
}
publicclassStaticValue
{
@SuppressWarnings("static-access")
publicstaticvoidmain(String[]args)
{
intbuffuValue=0;
StaticValueTest.staticVal=1;
buffuValue=StaticValueTest.staticVal;
System.out.println("类名访问初始:
->staticVal="+buffuValue);
StaticValueTestst=newStaticValueTest(1,2);
st.staticVal=2;
buffuValue=st.staticVal;
System.out.println("对象实例初始:
->staticVal="+buffuValue);
}
}
<4>实验结果:
实验4
<1>实验内容:
P111实验(10分)
<2>.实验构思:
抽象出intcalculateTime(intA,intB,intC);方法放在Common接口中,用相应的类去具体实现这个这个方法。
<3>.实验代码:
//接口
packageT_4;
publicinterfaceComman
{
intcalculateTime(intA,intB,intC);
}
//Plane类
packageT_4;
publicclassPlaneimplementsComman
{
publicPlane(){}
publicintcalculateTime(intA,intB,intC)
{
returnA+B+C;
}
}
//Car007类
packageT_4;
publicclassCar007implementsComman
{
publicintcalculateTime(intA,intB,intC)
{
returnA*B/C;
}
}
//Ship类
packageT_4;
publicclassShipimplementsComman
{
publicShip(){}
publicintcalculateTime(intA,intB,intC)
{
//TODO自动生成的方法存根
return(A*B)+C;
}
}
//ComputeTime类
packageT_4;
publicclassComputeTime
{
publicstaticvoidmain(String[]args)
{
if(args.length!
=4)
{
System.out.print("命令行参数错误.");
System.exit(0);
}
elsetry
{//创建接口实例(注意加包名)
Commancm=(Comman)Class.forName("T_4."+args[0]).newInstance();
//数值转换
intA=Integer.parseInt(args[1]);
intB=Integer.parseInt(args[2]);
intC=Integer.parseInt(args[3]);
//函数调用及输出
System.out.println(args[0]+"needs:
"+cm.calculateTime(A,B,C));
//异常捕获
}catch(InstantiationExceptione)
{
//TODO自动生成的catch块
e.printStackTrace();
}catch(IllegalAccessExceptione)
{
//TODO自动生成的catch块
e.printStackTrace();
}catch(ClassNotFoundExceptione)
{
//TODO自动生成的catch块
e.printStackTrace();
}
}
}
<4>实验结果:
Eclipse环境:
Cmd控制台:
实验5.
<1>实验内容:
P111实验(10分)
<2>实验构思:
Logo的导入,按钮的添加,字体的设置,及事件响应,四则混合运算实现。
图形界面的难点在于布局器的使用,底层设置了布局则无法继续改变控件大小,两种解决方式:
第一种调用控件方法sePreferredSize(newDimension());第二种将底层布局期设置为null。
四则混合运算通过操作数:
optNum1,optNum2,optNumBuf,操作符:
operation,optBuf来实现。
比较operation和optBuf的运算优先级,若operation的优先级高,则optNum1optNum1operationoptNum2,否则optNum2optNum2optBufoptBuf
<3>实验代码:
packageT_5;
importjava.awt.BorderLayout;
importjava.awt.Color;
importjava.awt.Container;
importjava.awt.Dimension;
importjava.awt.Font;
importjava.awt.GridLayout;
importjava.awt.Image;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.io.File;
importjava.io.IOException;
importjavax.imageio.ImageIO;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JPanel;
importjavax.swing.JTextField;
importjavax.swing.WindowConstants;
classCalculaterUIextendsJFrameimplementsActionListener
{
/**
*
*/
privatestaticfinallongserialVersionUID=1L;
privateJTextFieldtextfield;
privateStringbuttonName[]={"7","8","9","/",
"4","5","6","*",
"1","2","3","-",
"0",".","=","+"};
privateJButtonbutton[];
privateJPaneljp1,jp2;
privateStringstr;//表达式
Stringoperation,optBuf;//操作
StringoptNum1,optNum2,optNumBuf;//操作数
publicCalculaterUI()
{
//初始化
super("calculater");
//设置图标
try
{
Fileimg=newFile("src/img/logo"+".png");
Imageimage=ImageIO.read(img);
this.setIconImage(image);
}catch(IOExceptione)
{
System.out.println("logo导入失败.");
//TODO自动生成的catch块
e.printStackTrace();
}
str="";
operation=optBuf=null;
optNum1=optNum2=optNumBuf=null;
Containercontainer=getContentPane();
container.setLayout(newBorderLayout());
jp1=newJPanel();
jp1.setLayout(newGridLayout(1,1));
textfield=newJTextField();
textfield.setFont(newFont("宋体",Font.CENTER_BASELINE,25));
//底层设置了布局要继续改变控件大小的方法:
sePreferredSize(newDimension());
jp1.setPreferredSize(newDimension(0,40));
//jp1.setBounds(0,0,400,30);
jp1.add(textfield);
container.add(jp1,BorderLayout.NORTH);
jp2=newJPanel(newGridLayout(4,4,4,4));
button=newJButton[buttonName.length];
for(inti=0;i { //设置按钮颜色及字体 button[i]=newJButton(buttonName[i]); button[i].setFont(newFont("Conlas",Font.BOLD,25)); button[i].setForeground(newColor(255,43,0)); button[i].addActionListener(this); jp2.add(button[i]); } jp2.setBackground(newColor(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); } publicvoidactionPerformed(ActionEvente) { for(inti=0;i { if(e.getSource()==button[i]) { if(i%4! =3&&i<13)//0-9. { //刷新optNum1optNum2 if(optNum1==null&&optNum2==null) { str=""; textfield.setText(str); } if(optNum1==null||operation==null)//第一个操作数 { if(optNum1==null) { optNum1=buttonName[i]; } else {//超过两位数 optNum1+=buttonName[i]; } } elseif(optNum2==null||(optNum1! =null&&operation! =null&&optBuf==null))//第二个操作数 { if(optNum2==null) { optNum2=buttonName[i]; } else { optNum2+=buttonName[i]; } } elseif(optBuf! =null)//第三个操作数 { if(optNumBuf==null) { optNumBuf=buttonName[i]; } else { optNumBuf+=buttonName[i]; } } str+=buttonName[i]; textfield.setText(str); } elseif(i%4==3)//操作符+-*/3+2-5*0 { if(optNum2==null)//第一步操作: 第二个操作数为空(不用operation==null是因为operation输入了一次,可能再次输入) { if(operation==null) {operation=buttonName[i]; str+=operation; } else//再次输入改变operation操作符 {operation=buttonName[i]; str=str.replaceAll("[*/+-]$",operation);//替换原有最后一个的操作符 } textfield.setText(str); } else//第二步操作 { if(optBuf==null) { optBuf=buttonName[i]; if(isPriority(operation,optBuf))//左边先算 { optNum1=""+caculaterResult(Double.parseDouble(optNum1),operation,Double.parseDouble(optNum2)); System.out.println("optNu1ishere: "+optNum1); operation=optBuf; str+=optBuf; optBuf=null; optNum2=null; textfield.setText(str); } else//右边先算 { str+=optBuf; textfield.setText(str); //第二步运算级高于第一步,待第二个操作数输入后进行计算操作 } } else//原来的第二个运算高于第一个 {StringnewOptBuf=null; newOptBuf=buttonName[i];//先记录一下第三个运算 //先进性第二步运算 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); } } } elseif(buttonName[i]==".")//. { //一个数只能有一个小数点,正则检验 Stringregex="[0-9]+"; java.util.regex.Patternpattern=java.util.regex.Ppile(regex); java.util.regex.Matchermatcher; Stringresult=null; if(operation==null) { matcher=pattern.matcher(optNum1); result=matcher.matches()==true? ".": ""; optNum1+=result; } elseif(optBuf==null) { matcher=pattern.matcher(optNum2); result=matcher.matches()==true? ".": ""; optNum2+=result; } else { matcher=pattern.matcher(optNumBuf); result=matcher.matches()==true? ".": ""; optNumBuf+=result; } //str+="."; str+=result; textfield.setText(str); } elseif(buttonName[i]=="=") {s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 吉林大学 JAVA 课程 实验 报告