南京邮电大学java第四次实验报告

news/2025/2/26 13:32:24

 

 

实 验 报 告

( 2017 / 2018学年 第2学期)

 

 

 

课程名称

JAVA语言程序设计

实验名称

Java集成开发环境的安装与使用、

 Java变量、表达式与控制结构

实验时间

2018

  6

 7

指导单位

       计算机学院软件教学中心

指导教师

              许棣华

 

 

学生姓名

王利国

班级学号

B160209

学院(系)

电子与光学工程学院,微电子学院

专    业

微电子科学与工程

 

实验名称

方法、数组和类

指导教师

许棣华

 

实验类型

上机

实验学时

2

实验时间

2017.6.7

 

 

 

 

一、    实验目的

1. 了解和掌握Java中GUI组件和界面化设计

2. 掌握Java中创建线程对象的方法

3. 熟悉控制线程状态的过程

二、实验环境(实验设备)

1. 每位学生配备计算机一台

2. 计算机需安装好JDK和Jcreator

 

 

三、实验内容

1. 编写一个Applet,利用两个文本框对象input1和input2,接收用户从键盘输入的两个整型数。当用户单击“计算”按钮时,可进行算术计算,并输出运算结果;运算结果放在多行文本域JTextArea组件中。GUI界面参考教材198页9.6题。

package swing;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * @Author liguo
 * @Description
 * @Data 2018-06-04 20:06
 */
public class Test {
    public static void main(String[] args) {
        // 创建 JFrame 实例
        JFrame frame = new JFrame( "四则运算" );
        frame.setSize( 350, 300 );
        frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

        /* 创建面板,这个类似于 HTML 的 div 标签
         * 我们可以创建多个面板并在 JFrame 中指定位置
         * 面板中我们可以添加文本字段,按钮及其他组件。
         */
        JPanel panel = new JPanel();
        //添加面板
        frame.add( panel );
        /*
         * 调用用户定义的方法并添加组件到面板
         */
        placeComponents( panel );

        // 设置界面可见
        frame.setVisible( true );
    }

    private static void placeComponents(JPanel panel) {


        panel.setLayout( null );

        // 创建 JLabel
        JLabel firstLabel = new JLabel( "第一个数为" );
        /* 这个方法定义了组件的位置。
         * setBounds(x, y, width, height)
         * x 和 y 指定左上角的新位置,由 width 和 height 指定新的大小。
         */
        firstLabel.setBounds( 10, 20, 80, 25 );
        panel.add( firstLabel );

        //field
        JTextField firstNumber = new JTextField( 20 );
        firstNumber.setBounds( 100, 20, 165, 25 );
        panel.add( firstNumber );


        // 输入的文本域
        JLabel secondlabe2 = new JLabel( "第二个数字" );
        secondlabe2.setBounds( 10, 50, 80, 25 );
        panel.add( secondlabe2 );


        /**
         * 第二个数字的输入
         */

        JTextField secondNumber = new JTextField( 20 );
        secondNumber.setBounds( 100, 50, 165, 25 );
        panel.add( secondNumber );

        // 创建计算按钮
        JButton loginButton = new JButton( "计算" );
        loginButton.setBounds( 10, 80, 80, 25 );
        panel.add( loginButton );

        //添加页面输出
        JTextArea area = new JTextArea();
        area.setBounds( 100, 110, 165, 100 );
        panel.add( area );

        loginButton.addActionListener( new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                int a = Integer.parseInt( firstNumber.getText() );
                int b = Integer.parseInt( secondNumber.getText() );
                String str = "和为" + (a + b) +
                            "\n差为" + (a - b) +
                            "\n积为" + (a * b) +
                            "\n商为" + (a / b);
                area.append( str );
            }
        } );


    }
}
View Code

2. 编写一个应用程序,设计4个按钮,分别命名为“加”、“减”、“乘”、“除”,有3个文本框。单击相应的按钮,将两个文本框的数字做运算,在第三个文本框中显示结果。

package swing;

/**
 * @Author liguo
 * @Description  设计4个按钮,分别命名为“加”、“减”、“乘”、“除”,另外,窗口中还有3个文本框。
 * 单击相应的按钮,将两个文本框的数字做运算,在第三个文本框中显示结果。要求处理NumberFormatException异常。
 * @Data 2018-06-29 20:34
 */
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class Caculate extends JFrame implements ActionListener {
    JButton jia;
    JButton jian;
    JButton cheng;
    JButton chu;
    JTextField one;
    JTextField two;
    JTextField three;
    JLabel label;

    public Caculate() {
        init();
        setVisible(true);
        setResizable(true);
        validate();
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }

    public void init() {
        setLayout(new FlowLayout());
        setSize(300, 320);
        setTitle("计算");
        jia = new JButton("加");
        jian = new JButton("减");
        cheng = new JButton("乘");
        chu = new JButton("除");
        one = new JTextField(10);
        two = new JTextField(10);
        three = new JTextField(10);
        label = new JLabel(" ", JLabel.CENTER);
        label.setBackground(Color.green);
        add(one);
        add(label);
        add(two);
        add(three);
        add(jia);
        add(jian);
        add(cheng);
        add(chu);
        jia.addActionListener(this);
        jian.addActionListener(this);
        cheng.addActionListener(this);
        chu.addActionListener(this);

    }

    @Override
    public void actionPerformed(ActionEvent e) {
        double n;
        if (e.getSource() == jia) {
            double n1, n2;
            try {
                n1 = Double.parseDouble(one.getText());
                n2 = Double.parseDouble(two.getText());
                n = n1 + n2;
                three.setText(String.valueOf(n));
                label.setText("+");
            } catch (NumberFormatException ee) {
                three.setText("请输入数字字符");
            }
        } else if (e.getSource() == jian) {
            double n1, n2;
            try {
                n1 = Double.parseDouble(one.getText());
                n2 = Double.parseDouble(two.getText());
                n = n1 - n2;
                three.setText(String.valueOf(n));
                label.setText("-");
            } catch (NumberFormatException ee) {
                three.setText("请输入数字字符");
            }
        } else if (e.getSource() == cheng) {
            double n1, n2;
            try {
                n1 = Double.parseDouble(one.getText());
                n2 = Double.parseDouble(two.getText());
                n = n1 * n2;
                three.setText(String.valueOf(n));
                label.setText("*");
            } catch (NumberFormatException ee) {
                three.setText("请输入数字字符");
            }
        } else if (e.getSource() == chu) {
            double n1, n2;
            try {
                n1 = Double.parseDouble(one.getText());
                n2 = Double.parseDouble(two.getText());
                n = n1 / n2;
                three.setText(String.valueOf(n));
                label.setText("/");
            } catch (NumberFormatException ee) {
                three.setText("请输入数字字符");
            }
        }
        validate();
    }

    public static void main(String[] args) {
        Caculate test = new Caculate();
    }
}
View Code

//那个用JFormDesigner插件是好写 ,就是生成的代码量太多了,现在这个是重写的;

3. 编写一个有两个线程的程序,第一个线程用来计算2~100000之间的质数及个数,第二个线程用来计算100000~200000之间的质数及个数。

package swing;

/**
 * @Author liguo
 * @Description
 * @Data 2018-06-07 9:26
 */
public class Thread extends java.lang.Thread {

    public static void run(int min, int max) {
        int i, j;
        for (i = min; i <= max; i++) {
            for (j = 2; j < (int) Math.sqrt( i ); j++) {
                if (i % j == 0)
                    break;
                else
                    System.out.print( i );
                count++;
            }
            System.out.println( min + "  " + max + ":" + count );
        }
    }

    private int min, max;
    private static int count = 0;


    public static void main(String[] args) {
        Thread t1 = new Thread();
        Thread t2 = new Thread();
        t1.run( 2, 100000 );
        t2.run( 100000, 20000 );
    }
}
View Code

四、实验小结(包括问题和解决方法、心得体会等)

 

1:此次实验加深了自己对于swing的使用,尤其是几种布局的格式,以及控件按钮方法的书写。学会了通过插件JFormDesigner来写Swing界面做类似计算器的东西。

2:学习了用线程来写控制程序。

五、指导教师评语

 

成  绩

 

批阅人

 

日  期

 

                            

 

转载于:https://www.cnblogs.com/liguo-wang/p/9152591.html


http://www.niftyadmin.cn/n/3142466.html

相关文章

Spring Security Oauth2 自定义 Exception

可参考&#xff1a;https://blog.csdn.net/dandandeshangni/article/details/80472147转载于:https://www.cnblogs.com/ruhuanxingyun/p/10562606.html

Codeforces Beta Round #13 13A Numbers

Codeforces Beta Round #13 13A Numbers 题目&#xff1a; Little Petya likes numbers a lot. He found that number 123 in base 16 consists of two digits: the first is 7 and the second is 11. So the sum of digits of 123 in base 16 is equal to 18. Now he wonde…

Word高版本默认模板位置如何快速找到?

在Word Level2视频“内置默认样式的修改与恢复”中我曾讲到&#xff0c;默认样式和模板可以随意修改&#xff0c;恢复时只需要把Normal.dotm找到删除即可。有些同学用的是高版本&#xff0c;和我所讲word2010版有稍许不同&#xff0c;就遇到找不到的情况了。所以&#xff0c;在…

用Rsync实现windows下同步linux服务器的数据

一&#xff1a;环境 1、服务端&#xff1a;Red Hat Enterprise Linux Server release 6.4 (Santiago)  2、客户端&#xff1a;windows7旗舰版64位  3、同步对象&#xff1a;测试数据  4、Rsync介绍&#xff1a;rsync是linux系统下的数据镜像备份工具。使用快速增量备份工…

洛谷题解:P3926 SAC E#1 - 一道不可做题 Jelly

洛谷题解&#xff1a;P3926 SAC E#1 - 一道不可做题 Jelly 题目&#xff1a; SOL君很喜欢吃蒟蒻果冻。而SOL菌也很喜欢蒟蒻果冻。 有一天&#xff0c;他们在一起搓炉石&#xff0c;而SOL菌则要拿出蒟蒻果冻招待他的客人。 蒟蒻果冻一般在a度下保存在冰箱里。但是刚拿出来的…

将Cmder添加到系统右键菜单中

2019独角兽企业重金招聘Python工程师标准>>> 每次用camder手动一层一层的进入目标文件夹&#xff0c;是一件很麻烦的事儿。所以&#xff0c;将camder添加到系统右键菜单是个很好地解决方法。 1、把 Cmder 加到环境变量 把Cmder.exe存放的目录添加到系统环境变量&am…

leetcode 257. 二叉树的所有路径(Binary Tree Paths)

目录 题目描述&#xff1a;示例:解法&#xff1a;题目描述&#xff1a; 给定一个二叉树&#xff0c;返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 输入:1/ \2 3\5输出: ["1->2->5", "1->3"]解释: 所有根…

谈谈我理解的敏捷开发

2017-07-25 20:30 by 许大虾, 13847 阅读, 3 评论, 收藏, 编辑 “敏捷开发” 几乎成了互联网家户喻晓的一个热门话题。每个人都在聊敏捷、Scrum、XP。 我对“敏捷”的认识还算是在一个正在探索的阶段。网上有非常多的资料&#xff0c;五花八门&#xff0c;对于初学者来说无形之…