【JAVA】JAVA 第16周练习题
来源:互联网 发布:苹果儿童编程软件 编辑:程序博客网 时间:2024/06/03 12:26
JAVA 第16周练习题
- JAVA 第16周练习题
- 一 判断题
- 二 选择题
- 三 函数题
- 4-1 定义一个直角三角形类
- 参考代码
- 4-1 定义一个直角三角形类
- 四 编程题
- 5-1 求几何形状的面积之和
- 参考代码
- 5-2 数字格式异常
- 参考代码
- 5-4 查找成绩并折算后输出
- 参考代码
- 5-5 找素数
- 参考代码
- 5-6 计算正五边形的面积和周长
- 参考代码
- 5-1 求几何形状的面积之和
一 判断题
T 1-1 System.out.println(); 语句的作用是在结尾显示一个换行符。
T 1-2 Java中所有的I/O都是通过流来实现的。
T 1-3 Java系统的标准输入对象是System.in,标准输出对象有两个,分别是System.out和System.err。
T 1-4 接口中的方法默认是public abstract方法。
T 1-5 接口中的常量默认是public static的变量。
T 1-6 类在实现接口的方法时,必须显式地使用public修饰符。
T 1-7 一个类只能有一个父类,但一个接口可以有一个以上的父接口。
F 1-8 一个数组可以存放许多不同类型的数值。
T 1-9 制造(new)数组时,要指定数组长度,以便为数组分配内存。
T 1-10 用户可以自定义自己的异常类。
T 1-11 当一个方法在运行过程中产生一个异常,则这个方法会终止,但是整个程序不一定终止运行。
T 1-12 Java的字符类型采用的是Unicode编码,每个Unicode码占16个比特。
二 选择题
2-1 FilterOutputStream is the parent class for BufferedOutputStream, DataOutputStream and PrintStream. Which classes are valid argument for the constructor of a FilterOutputStream? ( )
A. InputStream
B. OutputStream
C. RandomAccessFile
D. StreamTokenizer
2-2 对于类与对象的关系,以下说法错误的是( )。
A. 类是对象的类型
B. 对象由类来创建
C. 类是同类对象的抽象
D. 对象是创建类的模板
2-3 以下关于Java的局部内部类的说法错误的是( )
A. 局部内部类只能在当前类中使用
B. 局部内部类不能包含静态成员
C. 局部内部类可以访问外部类的所有成员
D. 在局部内部类中定义的内部类不能被private修饰符修饰
注:在外部类方法体中定义的类叫局部内部类,局部内部类不能有访问修饰符,且只能访问方法体中的final类型的局部变量。本题正确答案给的是A,但是个人觉得应该是C。
2-4 下列String类的( )方法返回指定字符串的一部分。
A. extractstring()
B. substring()
C. Substring()
D. Middlestring()
2-5 以下程序段输出结果的是( )
public class Test { public static void main(String args[]){ String str="ABCDE"; str.substring(3); str.concat("XYZ"); System.out.print(str); }}
A. DE
B. DEXYZ
C. ABCDE
D. CDEXYZ
2-6 JPanel组件的默认布局管理器是( )。
A. BorderLayout
B. FlowLayout
C. GridLayout
D. CardLayout
2-7 Swing组件必须添加到Swing顶层容器相关的( )。
A. 分隔板上
B. 内容面板上
C. 选项卡上
D. 复选框内
2-8 以下关于构造函数的描述错误的是( )。
A. 构造函数的返回类型只能是void型。
B. 构造函数是类的一种特殊函数,它的方法名必须与类名相同。
C. 构造函数的主要作用是完成对类的对象的初始化工作。
D.一般在创建新对象时,系统会自动调用构造函数。
2-9 下面哪个函数是public void aMethod(){…}的重载函数?( )
A. void aMethod( ){…}
B. public int aMethod(){…}
C. public void aMethod ( ){…}
D. public int aMethod ( int m){…}
2-10 关于被私有访问控制符private修饰的成员变量,以下说法正确的是( )
A. 可以被三种类所引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类
B. 可以被两种类访问和引用:该类本身、该类的所有子类
C. 只能被该类自身所访问和修改
D. 只能被同一个包中的类访问
2-11 下列方法头中哪一个不与其他方法形成重载(overload)关系?( )
A. void mmm()
B. void mmm(int i)
C. void mmm(String s)
D. int mm()
2-12 下面哪个选项中的代码没有定义内部类,或者错误的定义了内部类? ( C )
//A: public Class Line { int length; Class Point { //内部类代码 } }//B: public Class Line { public Point getPoint() { return new Point(){ //内部类代码 }; } } //C: public Class Line { //外部类代码 } Class Point { //内部类代码 } //D: public Class Line { public int calcLength() { Class Point { //内部类代码 } } }
2-13 以下哪句是错误的?
A. 编译器会搜索要import的类的编译结果文件而不是源文件
B. import是告诉编译器要import的包的信息
C. import是把要import的类的源代码插入到import语句所在的地方
D. 编译器在编译的时候需要能访问得到要import的类的编译结果文件
2-14 Java程序默认引用的包是( )。
A. java.text包
B. java.awt包
C. java.lang包
D. java.util包
三 函数题
4-1 定义一个直角三角形类
创建一个直角三角形类(regular triangle)RTriangle类,实现下列接口IShape。两条直角边长作为RTriangle类的私有成员,类中包含参数为直角边的构造方法。
interface IShape {// 接口public abstract double getArea(); // 抽象方法 求面积public abstract double getPerimeter(); // 抽象方法 求周长}
直角三角形类的定义:
直角三角形类的构造函数原型如下:
RTriangle(double a, double b);
其中 a 和 b 都是直角三角形的两条直角边。
裁判测试程序样例:
import java.util.Scanner;import java.text.DecimalFormat;interface IShape { public abstract double getArea(); public abstract double getPerimeter();}/*你写的代码将嵌入到这里*/public class Main { public static void main(String[] args) { DecimalFormat d = new DecimalFormat("#.####"); Scanner input = new Scanner(System.in); double a = input.nextDouble(); double b = input.nextDouble(); IShape r = new RTriangle(a, b); System.out.println(d.format(r.getArea())); System.out.println(d.format(r.getPerimeter())); input.close(); }}
输入样例:
3.1 4.2
输出样例:
6.5112.5202
参考代码:
class RTriangle implements IShape{ private double a; private double b; public RTriangle(double a,double b) { this.a=a; this.b=b; } public double getArea(){ return a*b*0.5; } public double getPerimeter(){ return a+b+Math.sqrt(a*a+b*b); }}
四 编程题
5-1 求几何形状的面积之和
(求几何形状的面积之和)编写一个方法,求数组中所有几何形状对象的面积之和。方法签名如下:
public static double sumArea(shape[] a)
编写测试程序,继承抽象类shape得到圆形类Circle和矩形类Rectangle。
abstract class shape {// 抽象类/* 抽象方法 求面积 */public abstract double getArea();/* 抽象方法 求周长 */public abstract double getPerimeter();}
创建四个对象(两个圆和两个矩形)的数组,然后使用sumArea方法求出它们的总面积。(保留4位小数)
输入格式:
输入 1.1 (第1个圆形的半径) 1.8 (第2个圆形的半径) 2.3 3.8 (第1个矩形的宽和高) 5.9 16.8 (第2个矩形的宽和高)
输出格式:
The total area is 121.8401 (总面积,保留4位小数)
输入样例:
2.183.162.9 5.764.8 9.23
输出样例:
The total area is 107.3088
参考代码:
import java.util.Scanner;import java.text.DecimalFormat;abstract class shape {public abstract double getArea();public abstract double getPerimeter();}class yuan extends shape{ private double r; public yuan(double ar){ r=ar; } public double getArea(){ return Math.PI*r*r; } public double getPerimeter(){ return 2*Math.PI*r; }}class juxing extends shape{ private double w; private double h; public juxing(double aw, double ah){ w=aw; h=ah; } public double getArea(){ return w*h; } public double getPerimeter(){ return 2*(w+h); }}public class Main { public static double sumArea(shape[] a){ double sum=0; for(int i=0;i<a.length;i++){ sum+=a[i].getArea(); } return sum; } public static void main(String[] args) { Scanner in = new Scanner(System.in); DecimalFormat decimalFormat= new DecimalFormat("#.####"); shape[] a=new shape[4]; double r=in.nextDouble(); a[0]=new yuan(r); r=in.nextDouble(); a[1]=new yuan(r); double w=in.nextDouble(); double h=in.nextDouble(); a[2]=new juxing(w,h); w=in.nextDouble(); h=in.nextDouble(); a[3]=new juxing(w,h); in.close(); System.out.println("The total area is "+decimalFormat.format(sumArea(a))); }}
5-2 数字格式异常
(NumberFormatException数字格式异常)编写一个程序,提示用户读取两个整数,然后显示他们的和。程序应该在输入不正确时提示用户再次输入数字。
输入格式:
i 9 (第1次输入)
l 8 (第2次输入)
5 6 (第3次输入)
输出格式:
Incorrect input and re-enter two integers: (第1次输出提示)
Incorrect input and re-enter two integers: (第2次输出提示)
Sum is 11 (输出结果)
输入样例:
i 9l 85 6
输出样例:
Incorrect input and re-enter two integers:Incorrect input and re-enter two integers:Sum is 11
参考代码:
import java.util.Scanner;import java.io.IOException;import java.text.DecimalFormat;public class MouseInfo { public static void main(String[] args) { Scanner in=new Scanner(System.in); int a,b; while(true){ try{ a=in.nextInt(); b=in.nextInt(); System.out.println("Sum is "+(a+b)); break; }catch(java.util.InputMismatchException e){ System.out.println("Incorrect input and re-enter two integers:"); in.nextLine(); continue; } } }}
5-4 查找成绩并折算后输出
文件:期中考试成绩.txt中有若干学生的姓名和数学期中考试成绩。 Smith 67 Anderson 75 Lewis 83 Cook 58 David 96 请你编写一个简单的查询成绩程序,当从键盘输入一个姓名时查找到他的数学期中考试分数并按照21%折算后输出。如果没找到则显示Not found. 由于目前的OJ系统暂时不能支持用户读入文件,我们编写程序从键盘输入文件中的姓名和成绩,当输入的名字为noname时,表示结束。noname后面有一个名字,需要查找其成绩。
输入格式:
Smith 67
Anderson 75
Lewis 83
Cook 58
David 96
noname (表示结束)
Bill
输出格式:
Not found.
输入样例:
Smith 67Anderson 75Lewis 83Cook 58David 96nonameLewis
输出样例:
17.43
参考代码:
import java.util.*;public class Main{ public static void main(String [] args){ List<Map<String,String>> datas = new ArrayList<Map<String,String>>(); Scanner in = new Scanner(System.in); String name,grade; while(true){ name = in.next(); if(name.equals("noname")){ break; } grade = in.next(); Map<String,String> map = new HashMap<String,String>(); map.put(name,grade); datas.add(map); } String na = in.next(); for (int i = 0; i < datas.size(); i++) { if(datas.get(i).containsKey(na)){ System.out.println(Integer.parseInt(datas.get(i).get(na))*0.21); return; } } System.out.println("Not found."); }}
5-5 找素数
请编写程序,从键盘输入两个整数m,n,找出等于或大于m的前n个素数。
输入格式:
第一个整数为m,第二个整数为n;中间使用空格隔开。例如:
103 3
输出格式:
从小到大输出找到的等于或大于m的n个素数,每个一行。例如:
103
107
109
输入样例:
9223372036854775839 2
输出样例:
92233720368547759079223372036854775931
参考代码:
import java.math.BigInteger;import java.util.Scanner;/** * Created by jinlong on 2016/11/15. */public class Main { public static void main(String[] args){ Scanner in = new Scanner(System.in); BigInteger m; int n; m=in.nextBigInteger(); n=in.nextInt(); int cnt=0; while (cnt<n){ if (m.isProbablePrime(100)){ System.out.println(m); cnt++; } m=m.nextProbablePrime(); } in.close(); }}
5-6 计算正五边形的面积和周长
从下列的抽象类shape类扩展出一个正五边形(regular pentagon)类RPentagon,这个类将正五边形的边长作为私有成员,类中包含初始化这个值的构造方法。
public abstract class shape {// 抽象类/* 抽象方法 求面积 */ public abstract double getArea();/* 抽象方法 求周长 */ public abstract double getPerimeter(); }
请编程从键盘输入正五边形的边长值,创建一个正五边形对象,然后输出正五边形的面积和正五边形的周长。计算正五边形的面积公式为: S=5a^2/(4*tan(36度))其中a为边长。 或者:S=(1/4)a^2*√(25+10√5) 输出结果保留4位小数。
输入格式:
输入正五边形的边长。例如:
5
输出格式:
输出正五边形的面积和周长。第一行输出面积,第二行输出周长。例如: 43.0119
25
输入样例:
16.8
输出样例:
485.587584
参考代码:
import java.text.DecimalFormat;import java.util.Scanner;abstract class shape { public abstract double getArea(); public abstract double getPerimeter();}class RPentagon extends shape{ private double side; public RPentagon(double side) { this.side = side; } @Override public double getArea() { //return 5*side*side/(4*Math.tan(36.0/180*Math.PI)); return 0.25*side*side*Math.sqrt(25+10*Math.sqrt(5)); } @Override public double getPerimeter() { return side*5; }}public class Main { public static void main(String[] args){ Scanner in = new Scanner(System.in); DecimalFormat decimalFormat= new DecimalFormat("#.####"); double a=in.nextDouble(); RPentagon rPentagon= new RPentagon(a); System.out.println(decimalFormat.format(rPentagon.getArea())); System.out.println(decimalFormat.format(rPentagon.getPerimeter())); in.close(); }}
- 【JAVA】JAVA 第16周练习题
- 第14周—Java集合框架上机练习题1
- Java练习题16 输入
- 【java】pta17周练习题
- 【java】pta18周练习题
- JAVA学习 第九天(1)练习题
- java 练习题
- JAVA练习题
- java练习题
- java练习题
- java练习题
- java练习题
- java练习题
- java练习题
- java练习题
- java练习题
- Java练习题
- java练习题
- angular form表单错误提示并自动focus第一个input
- log4j myBatis 的sql输出配置
- 数据库性能优化之索引
- 为什么要从事BPM开发
- 拦截器,过滤器
- 【JAVA】JAVA 第16周练习题
- js学习笔记-变量作用域
- Qt5.6连接MySQL5.7出错
- 16.7 Swift基于多层链接的可选链
- Android状态栏沉浸模式
- 安装passthru驱动的问题
- Android内存优化工具(一)Allocation Tracking
- Laravel 的核心概念
- 自学安卓的第一个小小小App——计算器,希望前辈们多多指点