实验五Java事件处理
实验目的
1.掌握Java语言中的事件处理方法
2.掌握Java语言中事件源、监视器和处理事件的接口的概念
实验内容
1.图形用户界面设计程序(ArtFont.java)
在实验三第1题的基础上,添加事件处理机制,并逐步完善程序功能。分别用ArtFont 类的对象做监视器和匿名内部类的对象做监视器实现。
要求实现如下功能:
●当在文本框中输入文字后回车,在文本域中显示输入的文字。
●当分别选择粗体和斜体复选框时,文本域中的文字分别显示粗体和斜体样式。
●当点击颜色按钮时,出现颜色选择对话框,选择需要的颜色,按确定按钮后,
按钮的前景色和文本域的前景色设置为选定的颜色。
●当选择字体样式下拉框中的某一字体样式时,文本域中的文字设置为指定的字
体样式。
●当选择字体大小下拉框中的某一字体大小时,文本域中的文字设置为指定的字
体大小。
●当选择窗体样式下拉框中的某一窗体效果时,窗体外观改变为指定的窗体外
观。
图1 程序界面运行效果
精选文库
package Sy;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ArtFont extends JFrame {
static ArtFont artFont;
JComboBox fontType;//字体样式下拉框
JComboBox fontSize;//字体大小下拉框
JComboBox windowStyle;//窗体样式下拉框
JCheckBox boldBx;// 粗体按钮
JCheckBox italicBx;// 斜体按钮
JButton colorBtn;// 颜色按钮
String[] fontNames;// 字体名称
String[] fontSizes;// 字体大小
JLabel label;// 输入提示标签
JTextField inputText;// 文字输入框
JTextArea txtArea;// 文字显示区
JPanel northPanel;// 字体设置
JPanel centerPanel;// 显示效果区
JPanel southPanel;//样式设置
Font font;
int boldStyle, italicStyle;
int fontSizeStyle;
String fontNameStyle;
Color colorStyle = Color.black;// 设置字体的默认颜色为黑色
String[] style = { "默认显示效果", "Windows显示效果", "Unix显示效果" };
public ArtFont() {
super("字体设置");
// 设置默认字体
boldStyle = 0;
italicStyle = 0;
fontSizeStyle = 10;
fontNameStyle = "宋体";
font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle);
northPanel = getNorthPanel();
centerPanel = getCenterPanel();
southPanel = getSouthPanel();
// 设置容器
Container container = getContentPane();
container.setLayout(new BorderLayout());
add(northPanel , BorderLayout.NORTH);//将northPanel添加到窗体的北部
add(centerPanel , BorderLayout.CENTER);//将centerPanel添加到窗体的中部add(southPanel , BorderLayout.SOUTH);//将southPanel添加到窗体的南部setSize(500, 300);
setLocationRelativeTo(null);//将窗体位于屏幕的中央
setVisible(true);
}
private JPanel getNorthPanel() {
JPanel panel = new JPanel();
label = new JLabel("输入");
inputText = new JTextField(10);
boldBx = new JCheckBox("粗体");
italicBx = new JCheckBox("斜体");
colorBtn = new JButton("颜色");
inputText.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 文本输入
txtArea.setText(inputText.getText());
}
});
boldBx.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
// 加粗
if(e.getStateChange() == ItemEvent.SELECTED)
boldStyle = 1;
else
boldStyle = 0;
font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle);
txtArea.setFont(font);
}
});
italicBx.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
// 斜体
if(e.getStateChange() == ItemEvent.SELECTED)
italicStyle = 1;
else
italicStyle = 0;
font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle);
txtArea.setFont(font);
}
});
colorBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 改变颜色
colorStyle = JColorChooser.showDialog(null, "请选择一种颜色", colorStyle);
colorBtn.setForeground(colorStyle);
txtArea.setForeground(colorStyle);
font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle);
txtArea.setFont(font);
}
});
panel.add(label);
panel.add(inputText);
panel.add(boldBx);
panel.add(italicBx);
panel.add(colorBtn);
return panel;
}
private JPanel getCenterPanel() {
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
txtArea = new JTextArea();
panel.add(new JScrollPane(txtArea) , BorderLayout.CENTER);
return panel;
}
private JPanel getSouthPanel() {
JPanel panel = new JPanel();
//获得系统默认字体
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
fontNames = ge.getAvailableFontFamilyNames();
fontType = new JComboBox(fontNames);
//设置字体大小
fontSizes = new String[63];
for (int i = 0; i < fontSizes.length; i++) {
fontSizes[i] = Integer.toString(i+10);
}
fontSize = new JComboBox(fontSizes);
windowStyle = new JComboBox(style);
fontType.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
// 字体的类型
fontNameStyle = (String) e.getItem();
font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle);
txtArea.setFont(font);
}
});
fontSize.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
// 字体的大小
String s = (String) e.getItem();
fontSizeStyle = Integer.parseInt(s);
font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle);
txtArea.setFont(font);
}
});
windowStyle.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
// 改变窗口
String s = (String) e.getItem();
String className = "";
if (s.equals("Windows显示效果"))
className = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
else if (s.equals("Unix显示效果"))
className = "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
else if (s.equals("默认显示效果"))
className = UIManager.getCrossPlatformLookAndFeelClassName();
try {
UIManager.setLookAndFeel(className);
SwingUtilities.updateComponentTreeUI(artFont);
} catch (Exception de) {
System.out.println("Exception happened!");
}
}
});
panel.add(fontType);
panel.add(fontSize);
panel.add(windowStyle);
return panel;
}
public static void main(String args[]) {
artFont = new ArtFont();
artFont.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
2.日历应用程序设计
在实验三第2题的基础上,添加事件处理机制,并逐步完善程序功能。分别用
CalendarFrame类的对象做监视器和匿名内部类的对象做监视器实现。
要求实现如下功能:
●在文本框inputYear中输入年份,验证年份的有效性;按回车键后,显示输入
年份的正确日历
●单击previousMonth按钮可以显示当前月的上一月的日历;如果月份小于1,
则显示上一年的12月
●单击nextMonth按钮,可以显示当前月的下一月的日历;如果月份大于1,则
显示下一年的1月
CalendarBean.java
package Sy;
import java.util.Calendar;
public class CalendarBean {
String day[];
int year = 2013, month = 0;
public void setYear(int year) {
this.year = year;
}
public int getYear() {
return year;
}
public void setMonth(int month) {
this.month = month;
}
public int getMonth() {
return month;
}
//返回某年某月1号开始的日期数组
public String[] getCalendar() {
String a[] = new String[42];
Calendar 日历 = Calendar.getInstance();
//注意:1月份是从0开始,所以要减1
日历.set(year, month - 1, 1);
int星期几 = 日历.get(Calendar.DAY_OF_WEEK) - 1;
int day = 0;
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
day = 31;
}
if (month == 4 || month == 6 || month == 9 || month == 11) {
day = 30;
}
if (month == 2) {
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) { day = 29;
} else {
day = 28;
}
}
for (int i = 星期几, n = 1; i < 星期几 + day; i++) {
a[i] = String.valueOf(n);
n++;
}
return a;
}
}
CalendarFrame.java
package Sy;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CalendarFrame extends Frame {
Label labelDay[] = new Label[42];
Label labelYear;
Button titleName[] = new Button[7];
Button nextMonth, previousMonth;
Label showMessage;
TextField inputYear;
CalendarBean calendar;
String name[] = { "日", "一", "二", "三", "四", "五", "六" };
int year = 2013, month = 1;
String days[];
public CalendarFrame() {
calendar = new CalendarBean();
calendar.setYear(year);
calendar.setMonth(month);
days = calendar.getCalendar();
ScrollPane scrollPane = new ScrollPane();
scrollPane.add(getCenterPanel());
add(scrollPane, BorderLayout.CENTER);// 窗口添加scrollPane在中心区域
add(getNorthPanel(), BorderLayout.NORTH);// 窗口添加pNorth 在北面区域
add(getSouthPanel(), BorderLayout.SOUTH);// 窗口添加pSouth 在南区域。
}
private Panel getNorthPanel() {
Panel panel = new Panel();
labelYear = new Label("请输入年份:");
inputYear = new TextField(10);
previousMonth = new Button("上月");
nextMonth = new Button("下月");
inputYear.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 文本输入
try {
year = Integer.parseInt(inputYear.getText());
} catch (NumberFormatException e1) {
JOptionPane.showMessageDialog(null, "您输入的年份有误,请重新输入!");
inputYear.setFocusable(true);
}
calendar.setYear(year);
calendar.setMonth(month);
days = calendar.getCalendar();
for (int i = 0; i < 42; i++) {
labelDay[i].setText(days[i]);
}
showMessage.setText("日历:" + calendar.getYear() + "年"
+ calendar.getMonth() + "月");
}
});
previousMonth.addActionListener(new ActionListener() {
精选文库
public void actionPerformed(ActionEvent e) {
//上月按钮
month--;
if(month < 1){
year--;
month=1;
}
calendar.setYear(year);
calendar.setMonth(month);
days = calendar.getCalendar();
for (int i = 0; i < 42; i++) {
labelDay[i].setText(days[i]);
}
showMessage.setText("日历:" + calendar.getYear() + "年"
+ calendar.getMonth() + "月");
}
});
nextMonth.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 下月按钮
month++;
if(month > 12){
year++;
month=1;
}
calendar.setYear(year);
calendar.setMonth(month);
days = calendar.getCalendar();
for (int i = 0; i < 42; i++) {
labelDay[i].setText(days[i]);
}
showMessage.setText("日历:" + calendar.getYear() + "年"
精选文库
+ calendar.getMonth() + "月");
}
});
panel.add(labelYear);
panel.add(inputYear);
panel.add(previousMonth);
panel.add(nextMonth);
return panel;
}
private Panel getCenterPanel() {
Panel panel = new Panel();
panel.setLayout(new GridLayout(7, 7));
// 将panel的布局设置为7行7列的GridLayout布局
for (int i = 0; i < 7; i++) {
titleName[i] = new Button(name[i]);
panel.add(titleName[i]);
// panel添加组件titleName[i]。
}
for (int i = 0; i < 42; i++) {
labelDay[i] = new Label("", Label.CENTER);
panel.add(labelDay[i]);
// panel添加组件labelDay[i]。
}
for (int i = 0; i < 42; i++) {
labelDay[i].setText(days[i]);
}
return panel;
}
private Panel getSouthPanel() {
Panel panel = new Panel();
精选文库
showMessage = new Label();
showMessage.setText("日历:" + calendar.getYear() + "年"
+ calendar.getMonth() + "月");
panel.add(showMessage);
return panel;
}
}
CalendarMainClass.java
package Sy;
import java.awt.event.*;
public class CalendarMainClass {
public static void main(String args[]) {
CalendarFrame frame = new CalendarFrame();
frame.setTitle("日历应用程序");
frame.setBounds(100, 100, 360, 300);
frame.setVisible(true);
frame.validate();
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
总结体会:
实验五:循环结构与数组 一、实验目的 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] 信息工程学院1 《Java语言程序设计》实验报告 学院: 班级: 姓名: 学号: 成绩: 一、实习目标 (1)掌握Java的异常处理机制及相关实现方法; (2)掌握常用实用类的使用,熟悉使用JDK_API进行软件开发; (3)掌握Java中正则表达式的基本用法。 二、实验过程 实验题1 try-catch练习: JAVA_API: getMassage():返回此throwable或exception的详细消息字符串,正数除0 返回Infinity,负数除0返回-Infinity。 toString():对象利于null的详细消息字符串创建,则返回此对象的实际类的 名称,返回此throwable的简短描述。 printStackTrace():将错误的详细信息追踪到代码中具体某一行,将throwable 及其追踪输出至标准错误流。 代码截图: CatchError类: 实验报告的内容与格式按任课教师的要求书写。 MainTest类: 运行结果: 实验题2 用户自定义异常: 在ExceptionTest类中进行成绩录入和平均成绩的计算。 StasticScore类为成绩录入的具体方法,并进行异常检测。 ScoreException类继承StasticScore,输出错误提示。 代码截图: ExceptionTest类: ScoreException类: StasticScore类: 运行结果: 实验题3 String & StringBuffer的使用: JAVA_API: Int indexOf(String str, int fromIndex)函数:返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。如果不存在,返回-1。 Static String valueOf(int i)函数:返回int参数的字符串表示形式。该表示形式正是单参数的interger.toString方法返回的结果。 Int indexOf(String str, int fromIndex)函数:返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。如果不存在,则返回-1。 Public StringBuffer append(String str)函数:将指定的字符串追加到此字符序列。按顺序追加String变量中的字符,使此序列增加到该变量的长度。 代码截图: TestOfKeyword类: 实验五J a v a事件处理实验目的 1.掌握Java语言中的事件处理方法 2.掌握Java语言中事件源、监视器和处理事件的接口的概念 实验内容 1.图形用户界面设计程序 在实验三第1题的基础上,添加事件处理机制,并逐步完善程序功能。 分别用ArtFont类的对象做监视器和匿名内部类的对象做监视器实现。 要求实现如下功能: 当在文本框中输入文字后回车,在文本域中显示输入的文字。 当分别选择粗体和斜体复选框时,文本域中的文字分别显示粗体 和斜体样式。 当点击颜色按钮时,出现颜色选择对话框,选择需要的颜色,按 确定按钮后,按钮的前景色和文本域的前景色设置为选定的颜色。 当选择字体样式下拉框中的某一字体样式时,文本域中的文字设 置为指定的字体样式。 当选择字体大小下拉框中的某一字体大小时,文本域中的文字设 置为指定的字体大小。 当选择窗体样式下拉框中的某一窗体效果时,窗体外观改变为指 定的窗体外观。 图1 程序界面运行效果 package Sy; import .*; import .*; public class ArtFont extends JFrame { static ArtFont artFont; JComboBox fontType;et(year, month - 1, 1); int星期几 = 日历.get - 1; int day = 0; if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { day = 31; } 实验五异常处理 【实验目的】 1.了解Java 中异常处理(exception)的作用。 2.掌握异常处理的设计方法。 【实验内容】 一.Java的异常处理。源文件是Ex4_1.java。要捕捉的异常是除数为零和数组下标越界。 通过修改a和c[]下标值体验程序。 public class Ex4_1 { public static void main (String[] args) {int a, b; int c[]={1,2,3}; try{ a=10; b=100/a; System.out.println ("当前a值:"+a); c[2]=200; System.out.println ("当前数组长:"+c.length); }catch(ArithmeticException e) { System.out.println ("除零错误:"+e); } catch(ArrayIndexOutOfBoundsException e) { System.out.println ("数组下标越界:"+e); } finally { System.out.println ("我是finally");} System.out.println ("我能被正常执行到"); } } 【思考问题】 ①先运行上面没有错误程序,观察运行结果。 ②按下条件分别修改数据,编译后运行,观察输出结果,分析在try…catch块里那 些语句没有被执行,为什么? 块外那些语句可被执行到,为什么? ◆修改a=0,保持c[2]=200; ◆保持a=10,修改c[3]=200, ◆修改a=0,修改c[2]=200; ③再添加一个catch{Exception e}{ },位置在最前面,观察编译信息,说明什么?2.自定义异常类。注意throw、throws的使用。源文件是Ex4_2.java。 class MyException extends Exception //自定义异常类 {public String toString() { return "除数等于零"; } } C H A N G Z H O U U N I V E R S I T Y 实验报告 课程名称:JAVA程序设计 学生姓名:文浩班级计算机141 学号14416122 学院(系):信息数理学院指导教师:吕猛 实验时间:2016 年12 月 6 日实验名称:实验五基于Swing的图形用户界面开发实验 实验五基于Swing的图形用户界面开发实验 一实验容 (1)完成开发界面如图所示,实现如下功能 ①选中“查看已有名片”按钮,程序处于查看状态,可以在“名片列表”中选择要查看的名片,程序在“名片详实信息”栏显示该名片的详实信息,此状态中名片信息处于不可编辑状态 ②选中“添加新名片”按钮,程序处于添加状态,所有关于明天信息的项目都处于可编辑状态,设置完成相关信息后,单击“添加”按钮,在“名片列表”中出现新添加名片的名称。单击“清空”按钮可以清空还没提交的容 ③在查看状态和添加状态下,都可以通过点击“爱好”、“学历”单选按钮以显示名片的不同附加信息 (备注:名片附加信息部分,当点击“爱好”按钮时显示的如图1所示,当点击“学历”按钮时显示如图2所示。) 图1 图2 (2)记事本设计与实现 如图所示(1)编程实现如图所示的界面(2)实现文件、编辑、格式、查看,帮助菜单(3)实现记事本的基本功能 二实验目的 (1)理解组件的分类 (2)掌握容器、布局管理器、普通组件的使用 (3)理解事件处理机制的工作原理 (4)掌握事件的添加和功能代码的编写方法 三实验过程 (1)问题分析 答:名片的设计除了使用最基本的组件,如JButton,Jlist,JCheckBox,JTextField, JRadioButton, CardLayout以外,最主要的是逻辑事件的编写,在成功布局完见面后,就需要编写事件处理。首先,由于是名片信息,保存着一个人的基本信息,所以可以用一个类来表示,如PersonInf类,其次,由于是多个人的信息,可以通过ArrayList 来存放类;其次就是当点击按钮的时候,正确添加和显示信息,此处用到cardLayout 布局,可以减少界面的复杂度,在使用JList的时候,除了加滚动条意外,还需要listModel 获取数据等。 (2)代码编写 答: (1) public class PersonInf { public String yourname; public String address1; 第五章Java语言异常处理--实验题目 一、实验目的 1. 掌握Java的异常处理机制。 2. 掌握try、catch、throws和finally这5个关键字的用法。 3. 掌握成员的几个异常类。 4. 掌握自定义异常的使用。 二、实验内容 1.编写程序,从键盘上输入两个数。将第一个数除以第二个数并显示结果;处理所有可能的异常。 2.写出下面程序运行的结果: 3.写出下列程序的输出结果。 4.有下列程序: 若用下面方式执行该程序,则baz的值为( )。 java Test Red Green Blue (A)“”(B)null (C)"Red”(D)”BIue”(E)”Green”(F)代码不能编译(G)程序抛出异常5.有下列程序: 该程序的输出结果为( )。 (A)没有任何输出(B)输出“Finally”(C)编译错误(D)抛出异常 6.有下列程序: 该程序的输出结果为( )。 (A)没有任何输出(B)输出“Finally”(C)编译错误(D)抛出异常7.修改下列程序的错误之处。 8.写出下列程序的运行结果。 9.编写一个程序,要求从键盘输入一个double型的圆的半径,计算并精出其面积。 测试当输入的数据不是double型数据(如字符串“abc”)会产生什么结果,怎样处理。10.编写一个应用程序,在main()方法中使用try块抛出一个Exception类的对象,为Exception的构造方法提供一个字符串参数,在catch块内捕获该异常并打印出字符串参数。添加一个finally块并打印一条消息。 11.创建一个自定义的异常类,该类继承Exception类,为该类写一个构造方法,该构造方法带一个String类型的参数。写一个方法.令其打印出保存下来的String对泉。再编写一个类,在main()方法中使用try--catch结构创建一个MyException类的对象并抛出,在catch块中捕获该异常井打印出传递的String消息。 实验五Java事件处理 实验目的 1.掌握Java语言中的事件处理方法 2.掌握Java语言中事件源、监视器和处理事件的接口的概念 实验内容 1.图形用户界面设计程序(ArtFo nt.java) 在实验三第1题的基础上,添加事件处理机制,并逐步完善程序功能。分别用ArtFont 类的对象做监视器和匿名内部类的对象做监视器实现。 要求实现如下功能: 当在文本框中输入文字后回车,在文本域中显示输入的文字。当分别选择粗体和斜体 复选框时,文本域中的文字分别显示粗体和斜体样式。 当点击颜色按钮时,出现颜色选择对话框,选择需要的颜色,按确定按钮后,按钮的 前景色和文本域的前景色设置为选定的颜色。 当选择字体样式下拉框中的某一字体样式时,文本域中的文字设置为指定的字 体样式。 当选择字体大小下拉框中的某一字体大小时,文本域中的文字设置为指定的字 体大小。 当选择窗体样式下拉框中的某一窗体效果时,窗体外观改变为指定的窗体外观。 图1程序界面运行效果 package Sy; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ArtFont extends JFrame { static ArtFont artFont; JComboBox fontType;// 字体样式下拉框 JComboBox fontSize;// 字体大小下拉框 JComboBox windowStyle;// 窗体样式下拉框 JCheckBox boldBx;// 粗体按钮 JCheckBox italicBx;// 斜体按钮 JButton colorBtn;// 颜色按钮 String[] fontNames;// 字体名称 String[] fontSizes;// 字体大小 JLabel label;// 输入提示标签 JTextField inputText;// 文字输入框 JTextArea txtArea;// 文字显示区 JPanel northPanel;// 字体设置 JPanel centerPanel;// 显示效果区 JPanel southPanel;/样式设置 Font font; int boldStyle, italicStyle; int fontSizeStyle; String fontNameStyle; Color colorStyle = Color.black;// 设置字体的默认颜色为黑色 String[] style = { "默认显示效果 ", "Windows 显示效果 ", "Unix 显示效果 " }; public ArtFont() { super(”字体设置"); // 设置默认字体 boldStyle = 0; italicStyle = 0; fontSizeStyle = 10; fontNameStyle = "宋体 "; 一. 实验目的及实验环境 实验目的:1.理解JA V A对异常的处理 2.掌握自定义异常的定义方式 实验环境:eclipse 4.4 二. 实验内容 1.假设Sum类中有一个addContinue(int n)方法,当n>0时,方法翻译1+2+…+n 的和;当n<0时,方法抛出一个受检查的ArgumentException异常。ArgumentException类应该提供一个能够接受并保存n值得构造方法,以及一个能返回n值得实例方法,现定义Sum类以及ArgumentException类,并编程测试它们。 三.方案设计 1.定义三个类Sum,ArgumentException,Test类 2.分别在类中实现加法,异常抛出和测试 四.测试数据及运行结果 1.正常测试数据(3组)及运行结果; 2.非正常测试数据(2组)及运行结果。 五.总结 1.实验过程中遇到的问题及解决办法; ①中没有明确表示需要进行异常抛出很有可能就会忘记这个题目存在的问题。所以平常程序设计时,应该多考虑不同的情况,防止程序出现不可逆的漏洞。 ②如果发生可识别的运行错误,系统应产生一个相应的异常类对象,并进一步寻找异常处理代码来处理它,确保程序能从故障中恢复,之程序能够运行下去,直 到结束。 2.对设计及调试过程的心得体会。 中断,影响程序正常运行的事件称为异常。异常处理是使程序从故障中恢复,他包括提示异常信息、不产生无效结果和释放资源三方面内容。其中,显示异常信息和不产生无效结果可通过try和catch块来实现,释放资源可通过finally块实现。 附代码 public class Add { public int addContinue(int i) throws ArgumentException{ int sum=0; if( i<0){ throw new ArgumentException(i); } for(int n=0;n<=i;n++){ sum=sum+n; } return sum; } } public class ArgumentException extends Exception { private int n; public ArgumentException(int n) { this.n = n; } public int getN(){ return n; } } public class test { public static void main(String[] args){ Add s = new Add(); try { System.out.println(s.addContinue(-1)); } catch (ArgumentException e) { System.out.println(e.getN()); } } } 实验名称:实验5:Java 中的接口、匿名类和异常 班级:姓名:学号: 一、实验目的 熟悉Java 中的接口、匿名类和异常。 二、实验内容与结果 (说明:按实验任务分别填写任务描述、处理思路及关键技术说明、程序源码和运行结果截图,不要心得与体会。) 任务1:编写应用程序,从命令行输入两个小数参数,求它们的商。要求程序中捕获NumberformatException异常和ArithmeticException异常。 package test; import java.util.*; public class test1 { public static void main(String args[]){ try{ System.out.println(shang()); } catch(NumberFormatException e){ System.out.println(e.getMessage( )); } catch(ArithmeticException e){ System.out.println(e.getMessage( )); } } static double shang(){ Scanner reader = new Scanner(System.in); String a,b; a = reader.next(); b = reader.next(); return Double.parseDouble(a)/Double.parseD ouble(b); } } 任务2:设计一个训练场,这个训练场专门训练海豚,使它们能够跳舞dance ()和发出“呼呼”的声音cry(),要求用内部类实现。 package test; import java.util.*; public class test1 { public static void main(String args[]){ training p = new training(); System.out.println(p.p.dance()); System.out.println(p.p.cry()); } } class training{ dolphin p; training(){ p = new dolphin(); } class dolphin{ String dance(){ return"dance"; } String cry(){ 实验三Java异常处理 一、实验目的 1)掌握Java异常的概念及工作机制 2)掌握异常的分类 3)掌握抛出异常语句的使用(throw) 4)掌握抛出捕获处理异常语句的使用(try…catch…finally) 5)掌握上抛异常语句的使用(throws) 6)掌握创建自定义异常 二、实验内容 自定义一个异常类,求两个数的最大公约数。 三、实验步骤 1)声明一个类,继承与Exception,用来处理求公约数时被除数小于除数抛出异常。 2)声明一个方法来求公约数。 3)在主方法里通过控制台输入二个人数并把求公约数的方法写在try{}中,catch{}填写出现的自定义的异常及ArithmeticException 异常。 四、实现代码 import java.util.Scanner; class MyException extends Exception { int m,n; public MyException(int m,int n) { this.m=m; this.n=n; } public void process() { System.out.println("被除数小于除数!"); } } public class divisor{ int m,n; public divisor(int m,int n) { this.m=m; this.n=n; } public int div() throws MyException { int tmp; if(m 实验五Java项目开发实例 实验目的: 掌握运用RAD开发Java应用程序 目标要求: 1.掌握运用Visual Editor创建窗口应用程序 2.掌握通过JDBC连接数据库 内容简介: 本章将介绍MyLibrary的 GUI应用程序。 实验说明: 第一节创建GUI应用程序 1.添加JDBC环境变量 在菜单栏点击“文件 -> 新建 -> 项目”,选择“Java项目”,点击“下一步”。 输入项目名称“MyLibraryGUI”,点击“下一步”。 在Java设置中选择“库”栏,点击“添加变量”。在“新建变量类路径条目”对话框 中点击“配置变量” 在“类途径变量”对话框中点击“新建”按钮,会弹出“新建变量条目”对话框。在“名称”栏中输入“CLOUDSCAPE_DRIVER_JAR”,然后点击“文件”按钮,找到D:/Program Files/IBM/Rational/SDP/runtimes/base_v6/cloudscape/lib/,如下图: 点击“确定”。再次点击“确定”。在弹出对话框点击“是”。 在“新建变量类路径条目”窗口中选择 ,点击“确定”。 这样就在MyLibraryGUI项目里添加了Cloudscape 的JDBC驱动。点击“完成”按钮。 2.新建可视类(Visual Class) 在菜单栏选择“文件 -> 新建 -> 其它 -> Java -> 可视类”,点击“下一步”。 在“Java类”窗口,“包”文本框输入,“名称”文本框输入“MyLibraryDesktopApp”,“样式”选择“Swing -> 框架”(选择后“超类”变成),点击“接口”右侧的“添加”,输入ActionListener,点击“确定”。勾选“pulibc static void main(String[] args)”,点击“完成” 实验5 Java类库和常用类(一) 一. 实验目的及实验环境 1理解类库的概念,掌握分析、应用类库中的类的方法。 2熟练掌握Math类的常用方法。熟悉Random类的常用方法。 3理解String类的特性,熟练掌握String类的常用方法。 4能用Date类创建对象,熟练掌握Date类的常用方法。 5熟练掌握SimpleDateFormat解析日期和设置日期输出格式。 6学会查阅Java API在线参考文档和离线文档的方法。 二. 实验内容 1 基本内容(实验前请及时熟悉如下相关内容) 1)练习使用Math类的常用方法。 2)应用String类编程练习。 3)编写程序应用Random类生成随机数。 4)练习使用Date类的常用方法。 5)查阅Java API在线参考文档和下载Java API离线文档。 示例1. 应用SimpleDateFormat类的程序示例如下,共同学们模仿参考。 import java.text.*; import java.util.Date; public class FormatDateTime { public static void main(String[] args) { SimpleDateFormat myFmt = new SimpleDateFormat("yyyy年MM月dd日 HH 时mm分ss秒"); SimpleDateFormat myFmt1 = new SimpleDateFormat("yy/MM/dd HH:mm"); SimpleDateFormat myFmt2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 等价于now.toLocaleString() SimpleDateFormat myFmt3 = new SimpleDateFormat("yyyy年MM月dd日 HH 时mm分ss秒 E "); SimpleDateFormat myFmt4 = new SimpleDateFormat("一年中的第 D 天一年中第w个星期一月中第W个星期在一天中k时 z时区"); Date now = new Date();//当前时间 System.out.println(myFmt.format(now)); System.out.println(myFmt1.format(now)); System.out.println(myFmt2.format(now)); System.out.println(myFmt3.format(now)); System.out.println(myFmt4.format(now)); System.out.println(now.toGMTString());//The method toGMTString() from the type Date is deprecated. System.out.println(now.toLocaleString()); System.out.println(now.toString()); } } 实验四异常处理 实验目的 1、掌握异常的概念和Java 异常处理机制。 2、掌握异常的定义、抛出和捕捉处理。 实验内容与要求 1、仔细读下面的JAVA语言源程序,自己给出程序的运行结果 import java.io.*; public class Ch31 { public static void main(String args[])throws IOException { int[] ko=new int[15]; int n,a; String x; BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter an integer:"); x=keyin.readLine(); n=Integer.parseInt(x); try { a=110/n; ko[15]=100; System.out.println("此描述无法执行!"); } catch(ArithmeticException e){ System.out.println("除数为0的错误"); } catch(ArrayIndexOutOfBoundsException f) { System.out.println("数组索引值大于数组长度的错误!"); } System.out.println("执行完catch的描述!!!"); } } 2.运行下面的程序,自己给出程序的运行结果。 import java.io.*; public class Ch32{ public Ch32(){ try{ int a[] = new int[2]; a[4] = 3; System.out.println("After handling exception return here?"); }catch(IndexOutOfBoundsException e){ System.err.println("exception msg:" + e.getMessage()); System.err.println("exception string:" + e.toString()); e.printStackTrace(); }finally{ 实验五继承、抽象类和接口 学号 6 姓名刘顺专业网络工程成绩 【实验目的与要求】 1、掌握Java中类的继承、变量继承、方法继承的思想和使用; 2、理解和掌握java中多态性的覆写和重载的区别和用法; 3、掌握抽象和接口的工作机制和用法; 4、实验后及时总结、归纳、分析,并完成实验报告。 【实验内容与要求】 1、继承和覆盖的使用 (1)编写Employee雇员类,在该类中定义了3个域:name表示员工姓名,salary表示员工的工资,work表示工作:“编写程序”,并分别为它们定义了set和get方法。 (2)编写Manager经理类,该类继承自Employee雇员类。在该类中,定义了一个bonus域,表示经理的奖金,重写work方法:“管理项目”。 (3)在主类中,创建Employee雇员和Manager经理对象,并为其赋值,输出其信息。 2、抽象类的定义和使用 (1)定义抽象类Aniaml动物抽象类,通过构造方法得到动物名字并输出;定义抽象方法shout()表示叫声;定义抽象方法eat()表示吃食。 (2)定义Cat类继承自Animal类,调用父类的构造方法输出猫的名字信息。实现抽象方法shout(“猫叫:喵喵喵!”) ;实现抽象方法eat(“猫喜欢吃:鱼”)。 (3)定义Dog类继承自Animal类,调用父类的构造方法输出狗的名字信息。实现抽象方法shout(“狗叫:汪汪汪!”) ;实现抽象方法eat(“狗喜欢吃:骨头”)。 (4)在主方法中,实例化“小猫”和“小狗”,并向上转型赋给Aniaml类变量Animal ani =new Cat("小猫"); 分别调用ani的shout()和eat()方法。 3、接口的定义和使用 (1)定义一个USB接口标准,定义2个抽象方法:USB设备信息显示show();USB设备开始工作start();USB 设备停止工作stop(); (2)定义U盘子类,class Flash implements USB实现USB接口标准,实现方法:USB接入产品信息show (“USB设备已经接入”);设备启动信息start(“USB设备已经启动”);设备停止动作信息stop(“USB设备已经停止”); (2)定义打印机子类,class Print implements USB实现USB接口标准,实现方法:打印机接入产品信息show J a v a S w i n g中处理各组件事件的一般步骤 集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN] Java Swing中处理各组件事件的一般步骤是: 1.新建一个组件(如JButton)。 2.将该组件添加到相应的面板(如JPanel)。 3.注册监听器以监听事件源产生的事件(如通过ActionListener来响应用户点击按钮)。 4.定义处理事件的方法(如在ActionListener中的actionPerformed中定义相应方法)。 以上步骤我们可以用多种方法实现。但人们通常用二种方法。第一种方法是只利用一个监听器以及多个if语句来决定是哪个组件产生的事件;第二种方法是使用多个内部类来响应不同组件产生的各种事件,其具体实现又分两种方式,一种是匿名内部类,一种是一般内部类。 为了说明如何使用上述三种方法实现事件的处理方法,我们建立一个简单的应用程序。该程序界面有两个按钮,当用户点击相应的按钮,就会弹出一个对话框显示相应的内容。通过这个简单程序,你可以实现自己更多、更复杂的用户界面程序。 首先,我们利用单个监听器来实现该程序。我们定义一个名为Simple1的类来包括所有代码。所有的用户行为(如点击按钮)由一个监听器SimpleListenner中的actionPerformed方法来处理。以下是代码: import .*; import .*; public class Simple1 { private static JFrame frame;dd(myPanel); (); (true); } } 让我们来看看以上代码是如何工作的。在main方法中,我们定义了一个JFrame,然后将面板Jpanel添加到窗体中,该面板包括两个按钮。相应的变量Frame,button1,button2定义在程序的开头部分。 在程序入口main方法中,首先新建Simple1组件,通过构造器建立用户GUI,定义一个面板Jpanle,,增加两个按钮,然后利用将两个按钮加入到一个活动监听器SimpleLister中,最后,两个按钮添加到面板。当GUI 建立后,我们将面板添加到窗体并显示结果。当用户点击按钮时,程序调用actionPerformed方法,通过if语句来判断是哪一个按钮被点击,然后在对话框中显示相应的内容。 利用一个监听器来处理事件的缺点是,当程序比较复杂时,需要一大串的if 语句来实现,程序代码较难阅读与维护。当然,如果处理的事件较少,这种方式比较简单。 通过使用匿名内部类可以解决上述存在的问题。使用简单的匿名内部类作为addActionListener的变量即可。以下是实现代码: 实验7 1. 编一个程序,包含以下文件。 (1)Shape.java文件,在该文件中定义接口Shape,该接口在shape包中。 属性:PI。 方法:求面积的方法area()。 (2)Circle.java文件,在该文件中定义圆类Circle,该类在circle包中,实现Shape接口。 属性:圆半径radius。 方法:构造方法;实现接口中求面积方法area();求周长方法perimeter()。 (3)“Cylinder.java”文件,在该文件中定义圆柱体类Cylinder,该类口在cylinder包中,继承圆类。 属性:圆柱体高度height。 方法:构造方法;求表面积方法area();求体积方法volume()。 (4)X5_3_6.java文件,在该文件中定义主类X5_3_6,该类在默认包中,其中包含主方法main(),在主方法中创建两个圆类对象cir1和cir2,具体尺寸自己确定,并显示圆的面积和周长;再创建两个圆柱体类的对象cy1和cy2,具体尺寸自己确定,然后分别显示圆柱体cy1和cy2的底圆的面积和周长以及它们各自的体积和表面积。 【编程分析】本题主要考察接口、包、继承、封装等问题。编程步骤如下:第一步:首先创建p1包,在其中创建Shape接口 // Shape.java文件 package p1; // 创建p1包 public interface Shape{ // 定义Shape接口 … } 第二步:创建Circle类和Cylinder类,它们都定义在p2包中。 // Circle.java文件 package p2; // 创建p2包 import p1.*; public class Circle implements Shape{ // 定义实现Shape接口的Circle类 … } // Cylinder.java文件 package p2; public class Cylinder extends Circle{ // 创建继承Circle类的Cylinder类 … } 第三步:创建主类,在其中的main()方法中创建对象,实现相应的功能。 // X5_3_6.java文件 package p3; import p2.*; public class X5_3_6 { // 定义主类 public static void main(String[] args) { … } } 实验五继承、抽象类和接口 学号201617406 姓名刘顺专业网络工程成绩 【实验目的与要求】 1、掌握Java中类的继承、变量继承、方法继承的思想和使用; 2、理解和掌握java中多态性的覆写和重载的区别和用法; 3、掌握抽象和接口的工作机制和用法; 4、实验后及时总结、归纳、分析,并完成实验报告。 【实验内容与要求】 1、继承和覆盖的使用 (1)编写Employee雇员类,在该类中定义了3个域:name表示员工姓名,salary表示员工的工资,work表示工作:“编写程序”,并分别为它们定义了set和get方法。 (2)编写Manager经理类,该类继承自Employee雇员类。在该类中,定义了一个bonus域,表示经理的奖金,重写work方法:“管理项目”。 (3)在主类中,创建Employee雇员和Manager经理对象,并为其赋值,输出其信息。 2、抽象类的定义和使用 (1)定义抽象类Aniaml动物抽象类,通过构造方法得到动物名字并输出;定义抽象方法shout()表示叫声;定义抽象方法eat()表示吃食。 (2)定义Cat类继承自Animal类,调用父类的构造方法输出猫的名字信息。实现抽象方法shout(“猫叫:喵喵喵!”) ;实现抽象方法eat(“猫喜欢吃:鱼”)。 (3)定义Dog类继承自Animal类,调用父类的构造方法输出狗的名字信息。实现抽象方法shout(“狗叫:汪汪汪!”) ;实现抽象方法eat(“狗喜欢吃:骨头”)。 (4)在主方法中,实例化“小猫”和“小狗”,并向上转型赋给Aniaml类变量Animal ani =new Cat(" 小猫"); 分别调用ani的shout()和eat()方法。 3、接口的定义和使用 (1)定义一个USB接口标准,定义2个抽象方法:USB设备信息显示show();USB设备开始工作start();USB 设备停止工作stop(); (2)定义U盘子类,class Flash implements USB实现USB接口标准,实现方法:USB接入产品信息show (“USB设备已经接入”);设备启动信息start(“USB设备已经启动”);设备停止动作信息stop(“USB设备已经停止”); (2)定义打印机子类,class Print implements USB实现USB接口标准,实现方法:打印机接入产品信息show (“打印机已经接入”);设备启动信息start(“打印机已经启动”);设备停止动作信息stop(“打印机已经停止”); (3) 定义Computer类,定义插入USB方法plugin(USB usb) ,调用接口方法,实现接口功能。 (4) 在主类中定义Computer 的对象,分别调用方法plugin(USB Flash)表示插入Flash优盘,plugin(USB print) 表示插入打印机。 【实验过程与结果】 实验1: 实验程序 class Employee{ //父类(员工类) private String name; //私有成员变量姓名 private double salary; //私有成员变量工资 private String work; //私有成员变量工作 //成员变量赋值 public void setname(String name){ https://www.doczj.com/doc/e21639511.html,=name; } 实验三异常处理 [实验目的] 1.掌握异常处理方法及熟悉常见异常的捕获方法。 [实验内容] 1.练习捕获异常、声明异常、抛出异常的方法、熟悉try和catch 子句的使用。 [实验步骤与要求] 第1题异常处理 要求声明定义两个Exception的异常子类:NoLowerLetter类和NoDigit类。再声明一个People类,该类中的void printLetter(char c)方法抛出NoLowerLetter异常类对象,void PrintDigit(char c)方法抛出NoDigit异常类对象。 [作业提交] 将代码贴在下面: class NoLowerLetter extends Exception{ String message; NoLowerLetter(char c){ message=c+"不是正数"; } public String getMessage(){ return message; } } class NoDigit extends Exception{ String message; NoDigit(char c){ message=c+"不是偶数"; } public String getMessage(){ return message; } } class People{ public void printLetter(char c) throws NoLowerLetter{ if(c<0){ NoLowerLetter ex=new NoLowerLetter(c); throw(ex); } double number=Math.sqrt(c); System.out.println(c+"的平方根:"+number); } public void PrintDigit(char c) throws NoDigit{ if(c%2!=0){ NoDigit ex=new NoDigit(c); throw(ex); } double number=Math.sqrt(c); System.out.println(c+"的平方根:"+number); } } public class bianma{ public static void main(String args[]){ People p=new People(); try{ p.printLetter('Q'); p.printLetter(' '); } catch( NoLowerLetter e){ System.out.println(e.getMessage()); } try{ p.PrintDigit('d'); p.PrintDigit('a'); } catch( NoDigit e){ System.out.println(e.getMessage()); } } } 将结果运行截屏贴在下面:JAVA实验3-异常处理和常用实用类-报告
实验五 Java事件处理
java 异常处理
java 程序设计 实验五
第五章Java语言异常处理-实验题目
实验五Java事件处理
JAVA异常实验报告
JAVA实验五
实验三 Java异常处理
实验五java项目开发实例
实验5Java常用类(一)
JAVA实验四异常处理
Java实验五
JavaSwing中处理各组件事件的一般步骤完整版
JAVA实验7-9+答案
Java实验五
JAVA 异常处理实验报告