java上机实践567.docx
《java上机实践567.docx》由会员分享,可在线阅读,更多相关《java上机实践567.docx(32页珍藏版)》请在冰豆网上搜索。
![java上机实践567.docx](https://file1.bdocx.com/fileroot1/2023-1/23/d9a26024-249e-4827-ae20-e37cb866316e/d9a26024-249e-4827-ae20-e37cb866316e1.gif)
java上机实践567
上机实践5字符串、时间与数字
●实验1String类的常用方法
1.实验目的
掌握String类的常用方法
2.实验要求
编写一个java应用程序,判断两个字符串是否相同,判断字符串的前缀、后缀是否和某个字符串相同,按字典顺序比较两个字符串的大小,检索字符串,创建子字符串,将数字型字符串转换为数字,将字符串存放到数组中,用字符数组创建字符串。
3.程序源代码
publicclassStringExample
{
publicstaticvoidmain(String[]args)
{
Strings1=newString("youareastudent");
Strings2=newString("howareyou");
if(s1.equals(s2))
{
System.out.println("s1与s2相同");
}
else
{
System.out.println("s1与s2不同");
}
Strings3=newString("22030219851022024");
if(s3.startsWith("220302"));
{
System.out.println("吉林省的身份证");
}
Strings4=newString("你"),s5=newString("我");
if((pareTo(s5))>0)
{
System.out.println("按字典顺序s4大于s5");
}
else
{
System.out.println("按字典顺序s4小于s5");
}
intposition=0;
Stringpath="c:
\\java\\jsp\\A.java";
position=path.lastIndexOf("\\");
System.out.println("c:
\\java\\jsp\\A.java中最后出现\\的位置:
"+position);
StringfileName=path.substring(12,18);
System.out.println("c:
\\java\\jsp\\A.java中含有的文件名:
"+fileName);
Strings6=newString("100");
Strings7=newString("123.678");
intn1=Integer.parseInt(s6);
doublen2=Double.parseDouble(s7);
doublem=n1+n2;
System.out.println(m);
Strings8=String.valueOf(m);
position=s8.indexOf(".");
Stringtemp=s8.substring(position+1);
System.out.println("数字"+m+"有"+temp.length()+"位小数");
Strings9=newString("ABCDEF");
chara[]=s9.toCharArray();
for(inti=a.length-1;i>=0;i--)
{
System.out.print(""+a[i]);
}
}
}
4.程序运行结果
s1与s2不同
吉林省的身份证
按字典顺序s4小于s5
c:
\java\jsp\A.java中最后出现\的位置:
11
c:
\java\jsp\A.java中含有的文件名:
A.java
223.678
数字223.678有3位小数
FEDCBA
●实验2比较日期的大小
1.实验目的
掌握Date类以及Calendar类的常用方法
2.实验要求
编写一个Java应用程序,用户从输入对话框输入两个日期,程序将判断两个日期的大小关系,以及两个日期之间的间隔天数。
3.程序源代码
importjava.util.*;
importjavax.swing.JOptionPane;
publicclassDateExample
{
publicstaticvoidmain(Stringargs[])
{
Stringstr=JOptionPane.showInputDialog("输入第一个日期的年份:
");
intyearOne=Integer.parseInt(str);
str=JOptionPane.showInputDialog("输入该年的月份:
");
intmonthOne=Integer.parseInt(str);
str=JOptionPane.showInputDialog("输入该月份的日期:
");
intdayOne=Integer.parseInt(str);
str=JOptionPane.showInputDialog("输入第二个日期的年份");
intyearTwo=Integer.parseInt(str);
str=JOptionPane.showInputDialog("输入该年的月份");
intmonthTwo=Integer.parseInt(str);
str=JOptionPane.showInputDialog("输入该月份的日期");
intdayTwo=Integer.parseInt(str);
Calendarcalendar=Calendar.getInstance();
calendar.set(yearOne,monthOne,dayOne);
longtimeOne=calendar.getTimeInMillis();
calendar.set(yearTwo,monthTwo,dayTwo);
longtimeTwo=calendar.getTimeInMillis();
Datedate1=newDate(timeOne);
Datedate2=newDate(timeTwo);
if(date2.equals(date1))
{System.out.println("两个日期的年、月、日完全相同");
}
elseif(date2.after(date1))
{System.out.println("您输入的第二个日期大于第一个日期");
}
elseif(date2.before(date1))
{System.out.println("您输入的第二个日期小于第一个日期");
}
longdays=(timeTwo-timeOne)/(1000*60*60*24);
System.out.println(yearOne+"年"+monthOne+"月"+dayOne+"日和"+yearTwo+"年"
+monthTwo+"月"+dayTwo+"相隔"+days+"天");
}
}
您输入的第二个日期大于第一个日期
2006年6月6日和2008年8月3日相隔789天
●实验3处理大整数
1.实验目的
掌握BigInteger类的常用方法
2.实验要求
编写一个Java应用程序,计算两个大整数的和、差、积和商,并计算一个大整数的因子个数(因子中不包括1和大整数本身)。
3.程序源代码
importjava.math.*;
publicclassBigIntegerExa{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
BigIntegern1=newBigInteger("987654321987654321");
BigIntegern2=newBigInteger("123456789123456789");
BigIntegerresult=null;
result=n1.add(n2);
System.out.println("和:
"+result.toString());
result=n1.subtract(n2);
System.out.println("差:
"+result.toString());
result=n1.multiply(n2);
System.out.println("积:
"+result.toString());
result=n1.divide(n2);
System.out.println("商:
"+result.toString());
BigIntegerm=newBigInteger(”1968957");
BigIntegerCONUT=newBigInteger("0");
BigIntegerONE=newBigInteger("1");
BigIntegerTWO=newBigInteger("2");
System.out.println(m.toString()+"的因子有:
");
for(BigIntegeri=TWO;pareTo(m)<0;i=i.add(ONE))
{
if((n1.remainder(i).compareTo(BigInteger.ZERO))==0)
{
CONUT=CONUT.add(ONE);
System.out.print(""+i.toString());
}
}
System.out.println('');
System.out.println(m.toString()+"一共有"+CONUT.toString()+"个因子");
}
}
4.程序运行结果
和:
111111*********1110
差:
864197532864197532
积:
121932631356500531347203169112635269
商:
8
1968957的因子有:
379111317192133395157637791991171191331431531711872092212312472732893233573994295616276636937418198679691001107111971287130914631547168317291881198920232223226124312601271729073003317935533757392741994389464151875491606967837293815190099537106591127111781125971316713923155611647317017182071901920349218792225324453248712629928611293933197733813377913843741327461894941951051525795705760401667597138374613788978817911531112398113856715315315773717117118120320027721414922383923669126453728928932332334593336805337194337972141570142280747321149968154360957836964244768352778521386786789384396996999900111041591139163126842114990431735107
1968957一共有146个因子
●实验心得及体会
通过实验,我已基本掌握了String类、Date类和calendar类以及BigInteger类的常用方法。
上机实践6组件及事件处理
(1)
●实验1算数测试
1.实验目的
学习处理ActionEvent事件
2.实验要求
编写一个算数测试小软件,用来训练小学生的算数能力。
程序由3个类组成,其中Teacher类对象负责给出算数题目,并判断回答者的答案是否正确;ComputerFrame类对象负责算数题目提供视图,比如用户可以通过ComputerFrame类对象提供的GUI界面看到题目,并通过该GUI界面给出题目的答案;MailClass是软件的主类。
3.程序源代码
//Teacher.java
publicclassTeacher
{
intnumberOne,numberTwo;
Stringoperator="";
booleanright;
publicintgiveNumberOne(intn)
{
numberOne=(int)(Math.random()*n)+1;
returnnumberOne;
}
publicintgiveNumberTwo(intn)
{
numberTwo=(int)(Math.random()*n)+1;
returnnumberTwo;
}
publicStringgiveOperator()
{
doubled=Math.random();
if(d>=0.5)
operator="+";
else
operator="-";
returnoperator;
}
publicbooleangetRight(intanswer)
{
if(operator.equals("+"))
{if(answer==numberOne+numberTwo)
right=true;
else
right=false;
}
elseif(operator.equals("-"))
{if(answer==numberOne-numberTwo)
right=true;
else
right=false;
}
returnright;
}
}
//ComputerFrame.java
importjava.awt.*;
importjava.awt.event.*;
publicclassComputerFrameextendsFrameimplementsActionListener
{
TextFieldtextOne,textTwo,textResult;
ButtongetProblem,giveAnswer;
LabeloperatorLabel,message;
Teacherteacher;
ComputerFrame(Strings)
{
super(s);
teacher=newTeacher();
setLayout(newFlowLayout());
textOne=newTextField(10);
textTwo=newTextField(10);
textResult=newTextField(10);
operatorLabel=newLabel("+");
message=newLabel("你还没有回答呢");
getProblem=newButton("获取题目");
giveAnswer=newButton("确认答案");
add(getProblem);
add(textOne);
add(operatorLabel);
add(textTwo);
add(newLabel("="));
add(textResult);
add(giveAnswer);
add(message);
textResult.requestFocus();
textOne.setEditable(false);
textTwo.setEditable(false);
getProblem.addActionListener(this);
giveAnswer.addActionListener(this);
textResult.addActionListener(this);
setBounds(100,100,450,100);
setVisible(true);
validate();
addWindowListener(newWindowAdapter()
{publicvoidwindowClosing(WindowEvente)
{System.exit(0);
}
});
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==getProblem)
{
intnumber1=teacher.giveNumberOne(100);
intnumber2=teacher.giveNumberTwo(100);
Stringoperator=teacher.giveOperator();
textOne.setText(""+number1);
textTwo.setText(""+number2);
operatorLabel.setText(operator);
message.setText("请回答");
textResult.setText(null);
}
if(e.getSource()==giveAnswer)
{
Stringanswer=textResult.getText();
try
{intresult=Integer.parseInt(answer);
if(teacher.getRight(result)==true)
{
message.setText("你回答正确");
}
else
{message.setText("你回答错误");
}
}
catch(NumberFormatExceptionex)
{message.setText("请输入数字字符");
}
}
textResult.requestFocus();
validate();
}
}
//MainClass.java
publicclassMainClass
{
publicstaticvoidmain(Stringargs[])
{
ComputerFrameframe;
frame=newComputerFrame("算术测试");
}
}
4.运行结果
●实验2信号灯
1.实验目的
学习处理ItemEvent事件和paint方法
2.实验要求
编写一个带有窗口的应用程序。
在窗口的北面添加一个下拉列表,该下拉表有“红灯”,“绿灯”和“黄灯”三个选项。
在窗口的中心添加一个画布,当用户在下拉列表选择某项后,画布上绘制相应的信号灯。
3.程序源代码
//SignalCanvas.java
importjava.awt.Canvas;
importjava.awt.Color;
importjava.awt.Graphics;
publicclassSignalCanvasextendsCanvas
{
intred,green,yellow,x,y,r;
SignalCanvas()
{setBackground(Color.white);
}
publicvoidsetRed(intr)
{red=r;
}
publicvoidsetGreen(intg)
{green=g;
}
publicvoidsetYellow(inty)
{yellow=y;
}
publicvoidsetPosition(intx,inty)
{this.x=x;
this.y=y;
}
publicvoidsetRadius(intr)
{this.r=r;
}
publicvoidpaint(Graphicsg)
{
if(red==1)
{g.setColor(Color.red);
}
elseif(green==1)
{g.setColor(Color.green);
}
elseif(yellow==1)
{g.setColor(Color.yellow);
}
g.fillOval(x,y,2*r,2*r);
}
}
//SignalFrame.java
importjava.awt.*;
importjava.applet.*;
importjava.awt.event.*;
publicclassSignalFrameextendsFrameimplementsItemListener
{
Choicechoice;
SignalCanvassignal=null;
StringitemRed="红灯",itemYellow="黄灯",itemGreen="绿灯";
publicSignalFrame()
{
choice=newChoice();
choice.add(itemRed);
choice.add(itemYellow);
choice.add(itemGreen);
choice.addItemListener(this);
add(choice,BorderLayout.NORTH);
try
{
Classcs=Class.forName("SignalCanvas");
signal=(SignalCanvas)cs.newInstance();
add(signal,BorderLayout.CENTER);
}
catch(Exceptione)
{add(newLabel("您还没有编写SignalCanvas类"),BorderLayout.CENTER);
}
setBounds