Java语言程序设计期中考试试题

Java语言程序设计期中考试试题

一、编程题

1. 抽象类

创建闭合图形抽象类(ClosedFigure),定义抽象方法计算面积;创建继承平面图形抽象类的两个子类椭圆(Ellipse)和矩形(Rectangle),在子类中实现计算图形面积的方法。设计测试类Test1进行相应的测试,根据不同类型的平面图形进行相应的面积计算。(30分)

提示:根据椭圆第一定义,用a表示椭圆长半轴的长,b表示椭圆短半轴的长,且a>b>0, 椭圆面积公式:L=πab


2.接口

创建接口Speakable和Runer,然后创建两个类Sheep和Person实现这两个接口里面的方法。在类Sheep里面定义羊的特征(咩咩叫,用四肢跑步),在类Person里面定义人的特征(见面都问好,用双腿跑步),设计测试类Test2进行相应的测试。(30分)

提示:对于特征直接打印就可以了。


3.异常

在复数类中增加一个构造方法,该构造方法有一个字符串类型的参数(格式为a+bi,如“3.2+4.5i”)。对该字符串进行处理,提取实部子串和虚部子串,再分别转换为浮点数,赋给相应的成员变量。当实部子串和虚部子串的内容不能转化为浮点数时,抛出数值格式异常NumberFormatException。在main方法中获取用户从控制台输入的复数字符串(如3.2+4.5i),调用上面的构造方法构建复数对象,并进行必要的异常处理。(20分)

提示:从控制台获取用户输入的代码参考如下:

Scanner input = new Scanner(System.in);

String str = input.next();

注意:使用Scanner类需要导入类库中相应的类,代码如下:

import java.util.Scanner;


4. 字符串

已知字符串“i am a student in my university”

按要求执行以下操作(20分):

(1)将本字符串复制到一个字符数组char[] str中

(2)统计该字符串中字母i出现的次数;

(3)取出子字符串“my”;

(4)将本字符串转换成一个字符串数组,要求每个数组元素都是有意义的英文单词,并输出到控制台。

二、运行结果

(1)程序1运行结果

(2)程序2运行结果

(3)程序3运行结果

(4)程序4运行结果

三、源代码

(1)程序1源代码

package task1;

import java.util.Scanner;
import java.text.DecimalFormat;

//闭合图形抽象类(ClosedFigure)
abstract class ClosedFigure {
    // 定义抽象方法计算面积
    abstract double getArea();
}

// 定义椭圆(Ellipse)类继承继承平面图形抽象类(ClosedFigure)

class Ellipse extends ClosedFigure {
    // 定义成员变量
    double a, b;

    // 定义构造方法
    public Ellipse(double a, double b) {
        this.a = a;
        this.b = b;

    }

    // 实现抽象方法计算面积
    // 根据椭圆第一定义,用a表示椭圆长半轴的长,b表示椭圆短半轴的长,且a>b>0, 椭圆面积公式:L=πab
    public double getArea() {
        double L = Math.PI * a * b;
        return L;

    }

}

// 定义矩形(Rectangle)类继承继承平面图形抽象类(ClosedFigure)
class Rectangle extends ClosedFigure {
    // 定义成员变量
    double a, b;

    // 定义构造方法
    public Rectangle(double a, double b) {
        this.a = a;
        this.b = b;
    }

    // 实现抽象方法计算面积
    public double getArea() {
        double s = a * b;
        return s;
    }

}

// 设计测试类Test1进行相应的测试,根据不同类型的平面图形进行相应的面积计算。
public class Test1 {

    public static void main(String[] args) {
        System.out.println("欢迎光临~晴之小店~     o(≧v≦)o~~");
        System.out.println("这里可以计算椭圆和矩形的面积哦~");

        Scanner sc = new Scanner(System.in);
        DecimalFormat df = new DecimalFormat("0.00");

        System.out.println("开始请按1,退出请按0:");
        // 设置标志变量,判断计算开始和计算结束
        int temp = sc.nextInt();
        if (temp == 0) {
            System.out.println("欢迎下次光临~(≧▽≦)~再见");
        }
        while (temp == 1) {
            // 设置标志变量,判断椭圆的长半轴和短半轴输入是否符合要求
            int temp1 = 1;
            while (temp1 == 1) {

                System.out.println("请输入椭圆的长半轴和短半轴:");
                double aEll = sc.nextDouble();
                double bEll = sc.nextDouble();
                if (aEll <= 0 || bEll <= 0) {
                    System.out.println("长半轴、短半轴必须大于0!");
                    System.out.println("请重新输入:");
                    temp1 = 1;
                }

                else if (aEll < bEll) {
                    System.out.println("长半轴必须大于短半轴!");
                    System.out.println("请重新输入:");
                    temp1 = 1;
                } else {
                    Ellipse e = new Ellipse(aEll, bEll);
                    System.out.println("椭圆的面积为:" + df.format((e.getArea())));
                    temp1 = 0;
                }
            }
            // 设置标志变量,判断矩形的长和宽输入是否符合要求
            int temp2 = 1;
            while (temp2 == 1) {
                System.out.println("请输入矩形的长和宽:");
                double aRec = sc.nextDouble();
                double bRec = sc.nextDouble();
                if (aRec <= 0 || bRec <= 0) {
                    System.out.println("矩形的长和宽必须大于0!");
                    System.out.println("请重新输入:");
                    temp2 = 1;
                } else {
                    Rectangle r = new Rectangle(aRec, bRec);
                    System.out.println("椭圆的面积为:" + df.format((r.getArea())));
                    temp2 = 0;
                }
            }
            System.out.println("继续请按1,退出请按0:");
            temp = sc.nextInt();
            if (temp == 0) {
                System.out.println("欢迎下次光临~(≧▽≦)~再见");
                break;
            }
        }
    }
}

(2)程序2源代码

package task1;

// 创建接口Speakable
interface Speakable {
    // 定义抽象方法speak()
    void speak();
}

// 创建接口Runer
interface Runer {
    // 定义抽象方法 run()
    void run();
}

// 然后创建两个类Sheep和Person实现这两个接口里面的方法。
class Sheep implements Speakable, Runer {
    String name = "绵羊";

    // 实现抽象方法speak()
    public void speak() {
        System.out.println("咩咩");
    }

    // 实现抽象方法 run()
    public void run() {
        System.out.println("用四肢跑步");
    }
}

// 然后创建两个类Sheep和Person实现这两个接口里面的方法
class Person implements Speakable, Runer {
    String name = "人";

    // 实现抽象方法speak()
    public void speak() {
        System.out.println("见面都问好");
    }

    // 实现抽象方法 run()
    public void run() {
        System.out.println("用双腿跑步");
    }
}

public class Test2 {
    public static void main(String[] args) {
        Sheep sheep = new Sheep();
        System.out.println(sheep.name);
        sheep.speak();
        sheep.run();
        System.out.println();
        Person person = new Person();
        System.out.println(person.name);
        person.speak();
        person.run();

    }
}

(3)程序3源代码

package cn.itcast.test;

import java.util.Scanner; // 导入Scanner类

//定义复数类
class Complex {
    public double real; // 复数实部
    public double im; // 复数虚部

    // 增加一个构造方法,该构造方法有一个字符串类型的参数,并使用throws关键字声明抛出异常
    public Complex(String complex) throws NumberFormatException {
        String real, im;

        // 提取实部子串和虚部子串
        if (complex.indexOf("+") != -1) {
            real = complex.substring(0, complex.indexOf("+"));
            im = complex.substring(complex.indexOf("+") + 1,
                    complex.indexOf("i"));
            this.im = Double.parseDouble(im);
        } else {
            real = complex.substring(0, complex.indexOf("-"));
            im = complex.substring(complex.indexOf("-") + 1,
                    complex.indexOf("i"));
            this.im = -(Double.parseDouble(im));
        }

        // 实部转换为浮点数
        this.real = Double.parseDouble(real);
    }

    // 定义getReal()方法获取实部
    public double getReal() {
        return real;
    }

    // 定义getReal()方法获取虚部
    public double getIm() {
        return im;
    }
}

// 定义Test3测试类3
public class Test3 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.println("请输入a+bi格式的复数:");
        while (true) {
            String str = input.next();

            // 下面的代码定义了一个try...catch语句用于捕获异常
            try {
                // 实例化复数类的对象a
                Complex a = new Complex(str);

                // 分别输出该复数的实部和虚部
                System.out.println("该复数的实部为:" + a.getReal());
                System.out.println("该复数的虚部为:" + a.getIm());
                break;
            } catch (NumberFormatException e) {
                System.out.println("数值格式异常!请重新输入:"); // 打印捕获的异常信息
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

(4)程序4源代码

package task1;

public class Test4 {

    public static void main(String[] args) {
        String s1 = "i am a student in my university";
        // (1) 将本字符串复制到一个字符数组char[] str中并输出
        char[] str = s1.toCharArray();
        System.out.println("(1)将本字符串复制到一个字符数组char[] str中并输出:");
        for (int a = 0; a < str.length; a++) {
            System.out.print(str[a]);
        }
        System.out.println("\n");

        // (2) 统计该字符串中字母i出现的次数;
        int n = 0;
        for (int a = 0; a < str.length; a++) {
            if (‘i‘ == str[a]) {
                n++;
            }
        }
        System.out.println("(2)该字符串中字母i出现的次数:" + n);
        System.out.println("\n");

        // (3) 取出子字符串“my”;

        System.out.println("(3)取出子字符串“my”");
        System.out.println(s1.substring(s1.indexOf("my"), s1.indexOf("my")
                + "my".length()));
        System.out.println("\n");

        // (4) 将本字符串转换成一个字符串数组,要求每个数组元素都是有意义的英文单词,并输出到控制台。
        String[] s3 = s1.split(" ");
        System.out.println("(4)将本字符串转换成一个字符串数组后,数组元素为:");
        for (int a = 0; a < s3.length; a++) {
            if(a==s3.length-1){
                System.out.print(s3[a] );
            }
            else
            System.out.print(s3[a] + ",");
        }
    }
}
时间: 2024-10-17 04:15:05

Java语言程序设计期中考试试题的相关文章

《Java语言程序设计》大作业报告 九宫格游戏

    <Java语言程序设计>大作业报告     中国石油大学(北京)2015 - 2016 学年第二学期     班级:_____计算机14-1_______ 姓名:_____  许 恺_________________ 学号:______2014011329___________     题意分析 程序首先需要九个可以移动的格子,大小相等,有字符串标示,其次要可以相应鼠标和键盘方向键的控制,可以自由移动,并且与此同时记录步数,最后在满足条件时弹出对话框并显示步数以及是否打破记录,关于打破

Java语言程序设计 上机实验5 异常

Java语言程序设计 上机实验5 实验目的: 理解异常的概念,掌握Java的异常处理机制.常见异常的捕获方法.自定义异常及其抛出和捕获方法. 实验内容: 常见异常的捕获: 编写一个程序,分别生成ArrayIndexOutOfBoundsException类型和NumberFormatException类型的异常:然后改写程序,对这两种类型的异常进行捕获并合理地处理. 另外,思考并回答问题:能否0同时抛出ArrayIndexOutOfBoundsException类型和NumberFormatEx

Java语言程序设计 上机实验4 掌握声明接口、一个类实现接口的声明和使用方法

Java语言程序设计 上机实验4 实验目的: 理解接口的作用,理解接口和实现接口的类的关系,掌握声明接口.一个类实现接口的声明和使用方法:熟悉Java语言包和实用包中的常用类. 实验内容:(*)为选做 声明圆柱体类Cylinder,继承椭圆类Ellipse(实现周长Perimeter接口和面积Area接口),为圆柱体类设计较为全面的构造方法,并实现体积Volume接口,计算表面积和体积. 将Java的若干关键字(15个以上)保存在一个字符串数组中,对其按升序排列,再采用顺序查找和二分法查找,判断

java语言程序设计(一)-1

java 语言的特点是: 强类型,制定了比较多的语言规范,尽可能在编译阶段检测出更多的错误及警告. 编译和解释,首先将源代码编译成codebyte,运行时,java的运行系统装载和链接需要执行的类,并做必要的优化后,解释执行字节码程序. 自动无用内存回收功能,系统有个垃圾收集器,自动收集程序不再使用的内存. 面向对象,采用面向对象的思想方法.主要有封装,继承,多态等特点. 与平台无关,编译一次,可以跨平台运行,前提是平台上安装java解释器. 安全性,不允许使用指针,进行数组下标越界检测,内存自

java语言程序设计(一)-2

(一)jdk安装及环境变量配置 1.jdk下载 下载地址http://www.oracle.com/technetwork/java/javase/downloads/index.html,下载SE标准企业版本,当前已经更新到1.8.X版本了,但是最新版本不支持XP系统,已被验证(无法在xp系统中安装),于是选择1.7版本. 2.环境变量配置 配置path和classpath路径,我的电脑->属性->高级->环境变量,在用户变量中添加java的安装路径,在path中添加bin路径,在cl

全国计算机等级考试二级Java语言程序设计考试大纲(2013年版)

转自: 全国计算机等级考试,计算机二级,免费培训,免费视频教程,永久免费,免费培训IT  基本要求 1.掌握Java语言的特点.实现机制和体系结构. 2.掌握Java语言中面向对象的特性. 3.掌握Java语言提供的数据类型和结构. 4.掌握Java语言编程的基本技术. 5.会编写Java用户界面程序. 6.会编写Java简单应用程序. 7.会编写Java小应用程序(Applet). 8.了解Java语言的广泛应用.    考试内容  一.Java语言的特点和实现机制 二.Java体系结构 1.

JAVA语言程序设计(一)(1)

第一章 Java概述 1.JAVA语言特点: 1).语法简单,功能强大,安全可靠 2).与平台无关  java虚拟机(Java virtual machine,JVM)是实现这一特点的关键 3).解释编译两种运行方式 4).多线程 5).动态执行兼有丰富的API文档及类库 2.JDK(Java SE Development kit,Java语言软件开发工具包) 3.\bin目录中包含Java的开发工具,包括Java编译器javac.exe.Java解释器java.exe:\lib目录下是java

Java语言程序设计jdk配置环境

1)JAVA_HOME指明JDK安装路径, 就是刚才安装时所选择的路径C:\Program Files\Java\jdk1.8.0_121, 此路径下包括lib,bin,jre等文件夹(此变量最好设置,因为以后运行eclipse等都需要依*此变量): 2)Path使得系统可以在任何路径下识别java命令,设为:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin 3)CLASSPATH为java加载类(class orlib)路径,只有类在classpath中,java命令才能

中国MOOC_面向对象程序设计——Java语言_期末考试编程题_1细胞自动机

期末考试编程题 返回 这是期末考试的编程题 温馨提示: 1.本次考试属于Online Judge题目,提交后由系统即时判分. 2.学生可以在考试截止时间之前提交答案,系统将取其中的最高分作为最终成绩. 1 细胞自动机(30分) 题目内容: 这是细胞自动机的非图形版本.细胞自动机是指在一个二维网格内,每一个网格是一个细胞.每个细胞有活和死两种状态. 初始时刻,有些细胞是活的,有些细胞是死的.自动机的每一步,根据每个细胞周围8个格子内的其他细胞的生存情况决定这个细胞下一步是否存活.具体的规则如下: