java实验五

合集下载

java实验5图形用户界面设计试验

java实验5图形用户界面设计试验

java实验5图形⽤户界⾯设计试验常⽤布局1)、流布局: FlowLayout 从左到右,⾃上⽽下⽅式在容器中排列,控件的⼤⼩不会随容器⼤⼩变化.容器.setLayout(new FlowLayout(FlowLayout.LEFT));2)、⽹格布局: GridLayout 按照指定⾏数与列数,将容器分成⼤⼩相等的单元格每个单元格放置⼀个控件. 不能将控件放在指定单元格 容器.setLayout(new GridLayout(3,4,10,15));3)、边界布局: BorderLayout 将容器分成东、西、南、北、中五个部分 容器.setLayout(new BorderLayout()); 窗⼝的内容⾯板默认布局就是边界布局。

容器.add(控件,BorderLayout.NORTH);4)、混合布局: 使⽤JPanel,将多个布局组合在⼀起使⽤5)、绝对布局 null: 以坐标定位 容器.setLayout(null); 每个控件在放置在容器之前,必须设置其边界 setBounds(x,y,width,height); btn.setBounds(10,100,30,60);常⽤事件1)、事件源 EventSource:能够触发事件控件如:JButton,JTextField,JFrame,JComboBox,....2)、事件 Event:ActionEvent,KeyEvent,WindowEvent,TextEvent,...3)、事件侦听者Listener(接⼝) ActionListener,WindowListener,...class A implements ActionListener{public void actionPerformed(ActionEvent e){....}}A lis=new A();4)、事件处理函数public void actionPerformed(ActionEvent e){....}事件流程:事件源触发事件-->事件源侦听者接收事件-->⾃动调⽤相应事件处理函数.实践编程1.在应⽤程序窗体中安排1个⽂本框,⼀个标签。

JAVA实验报告5异常处理实验

JAVA实验报告5异常处理实验

JAVA实验报告5异常处理实验异常处理是Java程序设计中非常重要的一部分,能够有效地处理程序在运行过程中可能出现的异常情况。

在本次实验中,我们主要学习了Java中的异常处理机制,并对其进行了实践。

一、实验目的:1、学习Java中的异常处理机制;2、掌握如何使用try-catch来处理异常;3、了解Java中常见的异常类和异常处理语句的使用方法。

二、实验内容:1、编写一个Java程序,在程序中故意引发一个异常,然后使用try-catch语句来处理该异常,并在catch块中打印异常的详细信息;2、使用多个catch块来处理不同类型的异常,并在每个catch块中打印对应异常的详细信息;3、使用finally块来执行一些必须要执行的代码,比如关闭文件等。

三、实验步骤:1、首先,我们编写一个简单的Java程序,使用try-catch语句来处理异常。

假设我们在程序中故意除以0,然后在catch块中打印出异常信息。

代码如下:```public class ExceptionHandlingDemopublic static void main(String[] args)tryint result = 10 / 0;} catch (ArithmeticException e)System.out.println("发生异常:" + e);}}```2、接下来,我们使用多个catch块来处理不同类型的异常。

假设我们在程序中使用一个空数组,然后尝试访问数组的第一个元素。

如果数组为空,则会抛出ArrayIndexOutOfBoundsException异常。

代码如下:```public class ExceptionHandlingDemopublic static void main(String[] args)int[] array = new int[0];tryint firstElement = array[0];} catch (ArrayIndexOutOfBoundsException e)System.out.println("发生异常:" + e);} catch (Exception e)System.out.println("未知异常:" + e);}}```3、最后,我们使用finally块来执行一些必须要执行的代码。

Java实验5至10

Java实验5至10

实验五成员变量与方法实验时间:______年_____月_____日地点:______________ 指导教师:_________ 1. 实验目的(1)初步理解Java语言中类的成员基本概念。

(2)掌握成员变量如何刻画属性。

(3)掌握成员方法如何刻画行为。

(4)掌握面向对象封装的含义。

2. 实验要求(1)写出成员变量的创建过程。

(2)写出成员方法的创建过程。

(3)按要求撰写实验报告。

3. 实验内容(1)创建地址簿【问题描述】编写一个Java应用程序,定义一个地址簿类,设计一个能存储姓名、E-mail地址,并能显示一个地址的Address类。

【代码实现】【实验结果】(2)应用静态变量(或类变量)。

【问题描述】编写一个Java应用程序,定义一个类包含静态变量和非静态变量,并测试该程序,说明静态变量的特征。

【代码实现】【实验结果】(3)创建Course类【问题描述】编写一个Java应用程序,创建一个Course类,包括课程的名字和学生该门课程的成绩,定义一个学生类,包括学生的姓名和一个具体Course类的对象,定义测试类打印一名学生三门课程的平均成绩。

【代码实现】【实验结果】4.实验心得成绩:____________实验六继承与接口实验时间:______年_____月_____日地点:______________ 指导教师:_________ 1. 实验目的(1) 理解Java继承与接口的概念,并学会应用其解决问题。

(2) 理解接口和包的概念、接口的定义、接口的类型、接口的继承、组合。

(3) 掌握包的概念、类路径,能够创建包和使用包。

2. 实验要求(1)写出实现继承的过程。

(2)总结利用接口实现继承后程序设计中类的继承结构。

(3)按要求撰写实验报告。

3. 实验内容(1)继承应用【问题描述】设计三个类People、ChinaPeople和AmericanPeople,请填空完成程序,并画出类的继承结构图。

Java实验5

Java实验5

实验5图形界面程序设计一、实验目的:1、学习使用框架、面板、和简单用户界面UI组件。

2、学习使用布局管理器。

3、学习使用JavaBean组件创建图形用户界面应用程序。

4、理解和学习Windows事件驱动程序。

5、熟悉Java事件委托模式:事件的注册、监听和处理。

6、学习掌握掌握对象数组深复制的方法。

二、实验任务:1、使用Java SDK创建一个Windows图形界面应用程序。

2、实现一个能做算术运算的用户界面。

界面包括标签和文本域Number1、Number2、Result。

Result文本域用于显示Number1和Number2的算术运算的结果。

程序使用四个按钮,它们分别标有Add、Subtract、Multiply 和Divide。

程序也创建了完成相同功能运算的菜单。

三、实验步骤:1、首先设置环境变量,保证在任何目录下都可以使用Java SDK编程工具。

如果Java SDK的安装目录为C:\j2sdk1.4.2_09,则在命令提示符状态(从附件中进入)下键入如下命令行设置环境变量:path C:\j2sdk1.4.2_09\bin2、使用Windows写字板编辑应用程序,源代码如下:3、把上面编辑的源程序保存成Java源程序文件(扩展名为java),程序文件名分别是MenuDemo .java。

4、进入命令提示符状态,在源程序文件存放目录下键入如下命令编译上述程序:javac MenuDemo .java5、如果编译正确,则键入如下命令行,使用Java解释器运行源程序:java MenuDemo程序运行结果如下:四、本次实验难点:由于同学们过去学过的程序设计方法都是简单的基于命令流的控制台应用程序,所以建立Windows事件驱动模型的应用程序的概念是本次实验的难点,希望同学们仔细体会事件驱动模型的概念。

掌握Java设计用户图形界面应用程序的方法。

JAVA实验报告5异常处理实验

JAVA实验报告5异常处理实验

JAVA实验报告5异常处理实验一、实验目的1. 了解Java异常处理机制;2. 掌握Java中异常处理的方式;3.熟悉自定义异常的方法。

二、实验内容本实验通过编写代码来体验Java中的异常处理机制,主要包括以下几个方面:1.了解异常的基本知识;2. 学习try-catch语句的使用方法;3. 掌握throws关键字的用法;4.编写自定义异常类。

三、实验步骤1. 编写一个“除法计算器”类DivideCalculator,该类有一个名为divide的方法,用于计算两个整数的商,并返回结果。

如果除数为0,则会抛出一个自定义的异常类DivideByZeroException;2. 在DivideCalculator类中,先使用try-catch语句来捕获DivideByZeroException异常,如果除数为0,则在控制台上打印出“不能除以0”的错误信息;3. 在该方法中再使用throws关键字将异常抛出,以便调用方能捕获该异常;4. 编写一个测试类CalculatorTest来测试DivideCalculator类,将两个整数输入给divide方法,观察控制台输出的结果;5. 在CalculatorTest类中使用try-catch语句来捕获DivideByZeroException异常,并打印出错误信息;6. 在CalculatorTest的main方法中调用divide方法,传入5和0作为参数;7.运行程序,观察控制台输出的结果。

四、实验结果根据实验步骤中的代码编写,可得到以下实验结果:1.当传入的除数为非零整数时,程序正常执行并返回正确结果;2. 当传入的除数为0时,程序会抛出自定义的异常DivideByZeroException,并在控制台上打印出错误信息"不能除以0";3. 在CalculatorTest的try-catch语句中捕获到DivideByZeroException异常,并打印出错误信息"不能除以0"。

攀枝花学院Java实验五 常用类

攀枝花学院Java实验五 常用类

实验报告附页String s7 = new String("123.678");int n1=Integer.parseInt(s6);//将s6转化成int型数据。

double n2=Double.parseDouble(s7); //将s7转化成double型数据。

double m=n1+n2;System.out.println(m);String s8=String.valueOf(m); //String调用valuOf(int n)方法将m转化为字符串对象position=s8.indexOf(".");String temp=s8.substring(position+1);System.out.println("数字"+m+"有"+temp.length()+"位小数") ;@SuppressWarnings("unused")String s9=new String("ABCDEF");char a[]=s8.toCharArray(); //将s8存放到数组a中。

for(int i=a.length-1;i>=0;i--){System.out.print(" "+a[i]);}}}运行结果:将上面程序按如下要求修改,并运行:(1)程序中的s6改写成String s6=new String(“1a12b”);运行时提示怎样的错误?Exception in thread "main" ng.NumberFormatException: For input string: "1a12b"at ng.NumberFormatException.forInputString(Unknown Source)at ng.Integer.parseInt(Unknown Source)at ng.Integer.parseInt(Unknown Source)at xiti2.xiugai.main(xiugai.java:39)(2)请用数组a的前3个单元创建一个字符串并输出该串。

《Java程序设计》上机实验报告 实验五 流、文件及基于文本的应用

《Java程序设计》上机实验报告 实验五   流、文件及基于文本的应用

信息科学与工程学院《Java程序设计》上机实验报告专业班级姓名学号主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)2.编写一个程序,能将一个源程序中的空行及注释去掉,并将处理后的内容写到目标文件中。

(源文件名称和目标文件名称均要求以命令行参数形式输入)import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;public class CopyFile {static String delComm(String s){if(s==null)return s;int pos=s.indexOf("//"); //去掉以//开始的注释if(pos<0)return s;return s.substring(0,pos);}public static void main(String args[]){String infname="CopyFile.java";String outfname="CopyFile.txt";if(args.length>=1)infname=args[0];if(args.length>=2)outfname=args[1];try{File fin=new File(infname);File fout=new File(outfname);BufferedReader in = new BufferedReader(new FileReader(fin));PrintWriter out = new PrintWriter(new FileWriter(fout));int cnt=0;String s = in.readLine(); //写字符串while(s != null){主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)cnt ++;s=delComm(s); //去掉以//开始的注释out.println(cnt+":\t"+s);//写出s=in.readLine(); //读入}in.close(); //关闭缓冲读入流及文件读入流的连接out.close();}catch (FileNotFoundException e1){System.out.println("File not found");}catch(IOException e2){e2.printStackTrace();}}}主要问题的出错现象:1)运行程序后,无对应的输出结果出现2)源程序编写过程中,出现方法和类的调用无法完成.出错原因:1)函数调用时候,相关函数输入变量错误2)方法名的书写不符合规范,使得方法变为变量.解决方法及效果:1) 编写和调用类的方法时,注意参数的类型和数量的对应.2)规范命名.常量用大写字母,变量用小写字母开始,类以大写字母开始.实验小结:1) 为每个类分配正确的职责.尽量保持类功能单一. 不要在一个类中做太多事.2) BufferedReader的方法:readLine():String ,当他的返回值是null时,就表示读取完毕了。

Java实验5

Java实验5

Java实验5第一篇:Java实验5实验五一、实验内容:从键盘上输入一行字符串。

①将字符按Unicode字典顺序排序后输出。

②统计每个字符出现的次数和位置。

③统计含有的单词个数。

④正向和反向输出单词。

二、算法思路:要完成任务①:使用StringT okenizer类的countT okens( )方法和nextToken(),将单词存储到String a[ ]数组中,再定义一个空的String b[ ] , 用来存放比较大小后的单词。

要完成任务③:使用StringT okenizer类中的countTokens( )方法。

要完成任务②:定义charArray[i ]存放字符intArray[ i]出现字符的次数 addr[i][ ]用来存放出现字符的位置要完成任务④:可以通过之前定义存储的String a[ ]和相关简单算法,输出正向和反向的单词。

三、实验结果:四、程序代码:import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*;public class TokenT est extends JFrame{private JLabel promptLabel;private JTextField inputField;private JTextArea outputArea;public TokenTest(){super("字符串");Container container=getContentPane();container.setLayout(new FlowLayout());promptLabel=new JLabel("输入一个句子,然后按回车键");container.add(promptLabel);inputField=new JTextField(20);inputField.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent event){StringTokenizer tokens=new StringTokenizer(event.getActionCommand());int num=100;int n=0;num=tokens.countTokens();String a[]=new String[num];String b[]=new String[num];while(tokens.hasMoreTokens()){a[n++]=tokens.nextToken();}n=0;int m=0;while(m{for(int i=0;i<=n;i++){if(i==n)b[i]=a[m];else if(a[m].compareToIgnoreCase(b[i])<0){for(int j=n;j>i;j--)b[j]=b[j-1];b[i]=a[m];break;}}m++;n++;}outputArea.setText("按Unicode字典顺序排序后输出:\n"); for(int i=0;ioutputArea.append(b[i]+" ");outputArea.append("\n\n单词个数:"+num);String buffer=inputField.getText();char charArray[]=new char[26];int intArray[]=new int[26];int addr[][]=new int[26][26];n=0;for(int i=0;i{for(int j=0;j<=n;j++){if(j==n){charArray[j]=buffer.charAt(i);intArray[j]++;addr[j][intArray[j]-1]=i;}else if(buffer.charAt(i)==' '){n--;break;}else if(buffer.charAt(i)==charArray[j]){intArray[j]++;addr[j][intArray[j]-1]=i;n--;break;}}n++;}置:");});}outputArea.append("\n\n统计每个字符出现的次数和位置\n"); for(int i=0;ioutputArea.append(charArray[i]+" 次数:"+intArray[i]+" 位for(int j=0;j{outputArea.append(addr[i][j]+" ");}outputArea.append("\n"); }String s="\n";outputArea.append("\n单词正向输出:\n");for(int i=0;ioutputArea.append(a[i]+" ");outputArea.append("\n\n单词反向输出:");for(int i=0;i{for(int count=a[i].length()-1;count>=0;count--){s+=a[i].charAt(count);}s+=" ";}outputArea.append(s); }container.add(inputField); outputArea=new JTextArea(20,40); outputArea.setEditable(false); container.add(new JScrollPane(outputArea)); setSize(500,500); setVisible(true);public static void main(String[] args) {TokenTest application=new TokenTest();application.setDefaultCloseOperation(JFrame.EXIT_ON_CLO SE);} }五、心得体会:这个程序,应该是我目前所花时间最长编写出来的程序,从草稿纸上酝酿出算法,到最后在计算机上成功运行,花了3个晚上的时间,其中有一天晚上,本人忘我编程到凌晨12:30,当中遇到了很多出乎意料的问题,但是在遇到问题时,我积极思考,反复调试,编程开始阶段,程序一直异常跳出,我也花了挺多时间找错误,也花了不少时间检验算法的严密性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五:循环结构与数组
一、实验目的
1.掌握一维数组的概念、定义和使用
2.掌握数组与循环结构的联合使用
二、实验内容
1、随机产生20个0到100的整数,求最大值及其下标、最小值及其下标、平均值,并显示数组的所有元素值(按每行输出5个元素)以及最大值及其下标、最小值及其下标和平均值。

【提示】
产生随机数的方法:double number=Math.random( );(number以属于[0,1))
提示代码:
public class ArrayEx1 {
public static void main(String arge[]){
int maxi=0,sum=0,aver;
int []number;
number= new int[20];
for(int i=0;i<20;i++){
number[i]=(int)(101*Math.random());
System.out.print(number[i]+" ");
//如何五个打一行!
}
System.out.println();
for(int i=0;i<20;i++)
{
sum=sum+number[i];
if(number[maxi]<number[i])maxi=i;
}
aver=sum/20;
System.out.println("maxi="+maxi+"
number["+maxi+"]="+number[maxi]);
//最小值呢?
System.out.println("aver="+aver);
}
}
2、用计算机模拟掷骰子游戏。

编程序统计掷N次(N尽量的大,例如100000次)后各点数出现的次数。

【提示】
定义数组Dian[6],分别存放1至6点出现的次数。

产生一个[1,6]间的随机整数x,如果是3,就将Dian[2]的值增加1,依此类推。

提示代码:
public static void main(String arge[]){
int number;
int []dian={0,0,0,0,0,0};
for(int i=0;i<10000;i++){
number=1+(int)(6*Math.random());
if(number==1)dian[0]++;
else if(number==2)dian[1]++;
else if(number==3)dian[2]++;
else if(number==4)dian[3]++;
else if(number==5)dian[4]++;
else if(number==6)dian[5]++;
}
for(int i=0;i<6;i++){
System.out.println("dian["+i+"]="+dian[i]);
}
}
要求:求出各点数的占总数的比例。

用switch改写if语句。

3、编写程序,输出斐波那契级数1、1、2、3、5、8……的前30项,要求每行输出5个。

(用数组来实现)
【提示】
斐波那契数列的特点是:第一、第二都是1,从第三项开始,前面相邻两项之和,构成了后一项。

即:a[n]=a[n-1]+a[n-2]。

public class ArrayEx1 {
public static void main(String arge[]){
int []fb;
fb= new int[30];
//初始前两项
for(int i=2;i<30;i++){
????????????? //求第i项
System.out.println(fb[i]+" ");
//怎么五个显示一行,怎么显示第1,2项
}
}
}
4、随机产生20个学生的考试成绩,并显示。

统计各分数段人数,即0~59、60~69、70~79、80~89、90~100,并显示结果。

【提示】(与上题类似)
声明一个数组S[5],分别存放各分数段的人数,并且确定分数与S数组的下标关系。

5、编程采用冒泡法实现对数组元素由小到大排序。

冒泡法排序对相邻的两个元素进行比较,并把小的元素交换到前面。

提示:关键代码如下:
for(i=0;i<intArray.length-1;i++)
for(j=i+1;j<intArray.length;j++)
if(intArray[i]>intArray[j]){
t=intArray[i];intArray[i]=intArray[j];intArray[j]=t;
}
三、思考题
1.Java语言中的数组的使用要经过哪三个过程?它们是如何实现的?。

相关文档
最新文档