java pta 期末测试答案(稍后出试题解析)

单选题

(复制题目时鼠标把选项误触修改了,错了两题抱歉)
1、下列不可作为java语言标识符的是。(3分)

A. a2

B. $2

C. _2

D. 2x

2、关于抽象类,下面叙述错误的是( )。(3分)

A. 包含抽象方法的类必须是抽象类

B. 抽象方法只需要声明,不需要实现

C. 抽象类可以实例化

D. 抽象类中可以没有抽象方法

3、下列属于容器的组件是( )。(3分)

A. JButton

B. JPanel

C. Canvas

D. JTextArea

4、以下不属于java语言关键字的是( )。(3分)

A. default

B. throw

C. throws

D. implement

5、switch (表达式)语句中的表达式不能是以下哪种类型( )(3分)

A. int

B. short

C. boolean

D. char

6、关于构造方法,以下说法错误的是( )。(3分)

A. 构造方法的方法名必须与类名相同

B. 构造方法的返回类型必须是void

C. 构造方法可对实例变量进行初始化工作

D. 创建对象时构造方法由系统自动调用

7、 关于Java继承的描述,以下说法错误的是( )。(3分)

A. 一个类可以同时继承多个父类

B. 一个非终结类可以有多个子类

C. 一个非抽象子类继承时必须覆盖从父类中继承的抽象方法

D. 一个类可以同时实现多个接口

8、以下属于受检查的异常是( )。(3分)

A. NullPointerException

B. FileNotFound Exception

C. ArrayIndexOutOfBoundsException

D. AWTError

9、对于当前类的成员施加不同的访问控制,以下说法错误的是( )。(3分)

A. 默认成员,只有本包中的类可以访问

B. 保护类型成员,同一包内的类都可以访问

C. 保护类型成员,不同包的所有类都可以访问

D. 保护类型成员,不同包的子类可以访问

10、可以用于类的访问控制修饰符的是( )。(3分)

A. public

B. private

C. protected

D. abstract

编程题

7-1 一元二次方程求实解 (20 分)

从键盘读取一元二次方程的三个系数,编程求解X的实数根。

输入格式:
输入三个有符号整数(-128≤a,b,c≤128, a,b不同时为0)。

输出格式:
输出X的值(保留2位小数),具体格式参见样例。

输入样例:
在这里给出一组输入。例如:

0 2 3
1 2 1
1 3 2
1 2 3

输出样例:
在这里给出相应的输出。例如:

x=-1.50
x=-1.00
x1=-1.00,x2=-2.00
No real solution.

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

public class Main {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        while (input.hasNext()) {
            int a = input.nextInt();
            int b = input.nextInt();
            int c = input.nextInt();

            DecimalFormat df = new DecimalFormat("0.00");
            int delta;
            double x1, x2;
            delta = b * b - 4 * a * c;

            if (a == 0) {
                x1 = -c / (double)b;
                System.out.println("x=" + df.format(x1));
                continue;
            }
            if (a == 0 && c == 0) {
                System.out.println("x=0.00");
                continue;
            }
            if (delta == 0) {   //方程有两个相同实根
                x1 = b / -2.0 / a;
                System.out.println("x=" + df.format(x1));
            }
            if (delta > 0) {//方程有两个不同实根
                x1 = (-b + Math.sqrt(delta)) / 2.0 / a;
                x2 = (-b - Math.sqrt(delta)) / 2.0 / a;
                System.out.println("x1="
                        + df.format(x1) + ",x2=" + df.format(x2));
            }
            if (delta < 0) {//方程有虚根
                System.out.println("No real solution.");
            }
        }
    }
}
7-2 Circle & Cylinder (20 分)

从键盘读取两个非负浮点数,若第二个数为0,则以第一为半径创建一个圆形,并计算面积。若第二个不为0,则以这两个数为半径和高创建一个圆柱体,并计算表面积和体积。 在不修改主类情况,根据代码意图,补充设计相关类,使其通过主类测试。

Main.pdf

输入格式:
输入两个非负浮点数(第一个>0,表示半径。第二个>=0,表示高)。

输出格式:
输出圆的面积和体积或者圆柱体的表面积和体积,具体格式参见样例。

输入样例:
在这里给出一组输入。例如:

1 0
1 2

输出样例:
在这里给出相应的输出。例如:

Area=3.1416	Volume=0.0000
Area=18.8496	Volume=6.2832
import java.util.Scanner;

import static java.lang.Math.PI;

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        Circle c;
        while (sc.hasNext()) {
            double r = sc.nextDouble();
            double h = sc.nextDouble();
            if (Math.abs(h) < 1e-6) {//第二个参数为0
                c = new Circle(r);//创建圆,计算面积
            } else {//第二个参数非0
                c = new Cylindar(r, h);//创建圆柱体,计算表面积和体积
            }
            System.out.printf("Area=%.4f\tVolume=%.4f\n", c.getArea(),
                    c.getVolume());
        }
    }
}

class Circle {

    private double radius;
    private double height;
    private double area;
    private double volume = 0;

    public Circle() {

    }

    public Circle(double radius) {
        this.radius = radius;
        area = radius * radius * 3.1415926;
    }

    public double getArea() {
        return area;
    }

    public double getVolume() {
        return volume;
    }


}

class Cylindar extends Circle {

    private double radius;
    private double height;
    private double area;
    private double volume;

    public Cylindar(double radius, double height) {
        this.radius = radius;
        this.height = height;
        area = radius * radius * 3.1415926*2 +2*radius*3.1415926*height;
        volume = radius*radius*3.1415926 * height;
    }

    public double getArea() {
        return area;
    }

    public double getVolume() {
        return volume;
    }


}

主观题

1、 小明为客户开发了一套java桌面版应用程序,在windows平台编译完成,测试正常。准备交付客户时,客户突然提出新的需求,要求程序能在linux平台下运行。请问小明需要修改源程序并在新平台下重新编译测试吗?并请解释其中原理。(15分)

2、请结合你对java语言学习的实践,说明面向对象编程的特性,以及在java中的具体体现。(15分)

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值