【说明】某数据文件students.txt的内容为100名学生的学号和成绩,下面的程序将文件中的数据全部读入对象数组,按分数从高到低进行排序后选出排名前30%的学生。【Java代码】
第1题
阅读以下说明和 Java 代码,将应填入 (n) 处的语句或语句成分写在答题纸的对
应栏内。
【说明】
某数据文件 students.txt的内容为100名学生的学号和成绩,下面的程序将文件中的
数据全部读入对象数组,按分数从高到低进行排序后选出排名前 30%的学生。
【Java代码】
import java.io.*;
class Student {
private String sNO; //学号
private int Credit; //分数
public int getCredit(){
return Credit;
}
public String toString() {
return "sNO = " + this.sNO + ", Credit = " + this.Credit;
}
Student(String sNO, int Credit){
(1) = sNO;
(2) = Credit;
}
}
public class SortStudent {
void sort(Student[] s) { //Sort the array s[] in decending order of Credit
for (int i = 0; i < s.length-1; i++) {
for (int j = i+1; j < s.length; j++) {
if (s[i]. (3) < s[j]. (4) ) {
Student tmp = s[i];
s[i] = s[j];
s[j] = tmp;
}
}
}
}
public static void main(String argv[]) {
Student[] testStudent = new Student[size];
try {
BufferedReader in = new BufferedReader(new FileReader("students.txt"));
boolean done = false;
int i = 0;
while (!done) {
String s = in.readLine(); //每次读取一个学生的学号和成绩
if (s != null) {
String tmp[] = s.split(",");
testStudent[i++] = (5) (tmp[0], Integer.parseInt(tmp[1]));
} else
done = true;
}
in.close();
(6) = new SortStudent();
ss.sort(testStudent);
System.out.println("top 30%:");
for (int j = 0; j < size * 0.3; j++)
System.out.println(testStudent[j]);
} catch (IOException e) {
System.out.println("io error!");
}catch (NumberFormatException e) {
System.out.println("not a number!");
}
}
(7) int size = 100; //学生总数
}
第2题
阅读以下说明和 Java 代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
[说明]
java.util 库中提供了 Vector 模板类,可作为动态数组使用,并可容纳任意数据类型。该类的部分方法说明如下表所示:
[Java 代码]
import (1) ;
public class JavaMain {
static private final int (2) = 6;
public static void main(String[] args){
Vector<Integer> theVector = new Vector< (3) >();
// 初始化 theVector,将 theVector的元素设置为 0 至 5
for (int cEachItem = 0; cEachItem < ARRAY_SIZE; cEachItem++)
theVector.add( (4) );
showVector(theVector); // 依次输出 theVector中的元素
theVector.removeElementAt(3);
showVector(theVector);
}
public static void showVector(Vector<Integer> theVector){
if (theVector.isEmpty()) {
System.out.println("theVector is empty.");
return;
}
for (int loop = 0; loop < theVector.size(); loop++) {
System.out.print(theVector.get(loop));
System.out.print(", ");
}
System.out.println();
}
}
该程序运行后的输出结果为:
0, 1, 2, 3, 4, 5
(5)
第3题
阅读以下说明和Java代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【 说明 】
现需要统计某企业员工的月平均工资,即该企业本月发给员工的工资总和除以员工人数。 假设企业本月发给员工的工资总和为sumSalary,该企业的员工总数为employeeNumber,
下面的程序代码计算该企业员工本月的平均工资,其中需要处理employNumber为0的情况。
【 Java 代码 】
import java.util.Scanner;
public class JavaMain {
static float average(float x, int y) throws Exception{
if (y ==0 ) throw new Exception( (1) );
return x/y;
}
static void caculate() throws Exception{
float sumSalary;
int employeeNumber;
Scanner sc = new Scanner( (2) );
try{
System.out.println("请输入当月工资总和与员工数:");
sumSalary = sc.nextFloat(); //从标准输入获得工资总和
employeeNumber = sc.nextInt(); //从标准输入获得员工数
float k = average(sumSalary,employeeNumber);
System.out.println("平均工资:" + k);
}
(3) (Exception e){
if(e.getMessage().equalsIgnoreCase("zero")){
System.out.println("请重新输入当月工资总和与员工数:");
sumSalary = sc.nextFloat();
employeeNumber = sc.nextInt();
float k = average(sumSalary,employeeNumber);
System.out.println("平均工资:" + k);
}
}
}
public static void main(String[] args) {
try {
caculate();
}
(4) (Exception e){
if ( e.getMessage().equalsIgnoreCase("zero"))
System.out.println("程序未正确计算平均工资!" );
}
}
}
【问题1】
程序运行时,若输入的员工工资总和为6000,员工数为5,则屏幕输出为:
请输入当月工资总和与员工数:
6000 5
(5)
【问题2】
若程序运行时,第一次输入的员工工资总和为6000,员工数为0,第二次输入
工工资总和为0,员工数为0,则屏幕输出为:
请输入当月工资总和与员工数:
6000 0
(6)
0 0
(7)
第4题
阅读以下说明和Java代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【 说明 】
现需要统计某企业员工的月平均工资,即该企业本月发给员工的工资总和除以员工人数。 假设企业本月发给员工的工资总和为sumSalary,该企业的员工总数为employeeNumber,
下面的程序代码计算该企业员工本月的平均工资,其中需要处理employNumber为0的情况。
【 Java 代码 】
import java.util.Scanner;
public class JavaMain {
static float average(float x, int y) throws Exception{
if (y ==0 ) throw new Exception( (1) );
return x/y;
}
static void caculate() throws Exception{
float sumSalary;
int employeeNumber;
Scanner sc = new Scanner( (2) );
try{
System.out.println("请输入当月工资总和与员工数:");
sumSalary = sc.nextFloat(); //从标准输入获得工资总和
employeeNumber = sc.nextInt(); //从标准输入获得员工数
float k = average(sumSalary,employeeNumber);
System.out.println("平均工资:" + k);
}
(3) (Exception e){
if(e.getMessage().equalsIgnoreCase("zero")){
System.out.println("请重新输入当月工资总和与员工数:");
sumSalary = sc.nextFloat();
employeeNumber = sc.nextInt();
float k = average(sumSalary,employeeNumber);
System.out.println("平均工资:" + k);
}
}
}
public static void main(String[] args) {
try {
caculate();
}
(4) (Exception e){
if ( e.getMessage().equalsIgnoreCase("zero"))
System.out.println("程序未正确计算平均工资!" );
}
}
}
【问题1】
程序运行时,若输入的员工工资总和为6000,员工数为5,则屏幕输出为:
请输入当月工资总和与员工数:
6000 5
(5)
【问题2】
若程序运行时,第一次输入的员工工资总和为6000,员工数为0,第二次输入
工工资总和为0,员工数为0,则屏幕输出为:
请输入当月工资总和与员工数:
6000 0
(6)
0 0
(7)
第5题
说明
类Queue表示队列,类中的方法如下表所示。
类Node表示队列中的元素;类EmptyQueueException 给出了队列操作中的异常处理操作。
Java 代码
public class TestMain{ // 主类
public static void main(String args[]) {
Queue q = new Queue();
q.enqueue("first!");
q.enqueue("second!");
q.enqueue("third!");
(1) {
while(true)
System.out.println(q. dequeue());
}
catch((2)) ( }
}
}
public class Queue { // 队列
Node m_FirstNode;
public Queue() { m_FirstNode = null; }
public boolean isEmpty() {
if(m_FirstNode == null) return true;
else return false;
}
public void enqueue(Object newNode) {// 入队操作
Node next = m_FirstNode;
if(next==null) m_FirstNode = new Node(newNode);
else {
while(next.getNext() != null) next = next.getNext();
next.setNext(new Node(newNode));
}
}
public Object dequeue() (3) {// 出队操作
Object node;
if (isEmpty())
(4); // 队列为空,抛出异常
else {
node = m_FirstNode.getObject();
m_FirstNode = m_FirstNode.getNext();
return node;
}
}
}
public class Node { // 队列中的元素
Object m_Data;
Node m_Next;
public Node(Object data) { m_Data = data; m_Next = null; }
public Node(Object data, Node next) { m_Data = data; m_Next = next; }
public void setObject(Object data) { m_Data = data; }
public Object getObject0 { return m_Data; }
public void setNext(Node next) { m_Next = next; }
public Node getNext() { return m_Next; }
}
public class EmptyQueueException extends (5) { // 异常处理类
public EmptyQueueException0 {
System.out.println("队列已空 ! ");
}
}
第6题
阅读以下说明和Java代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
已知类 LinkedList 表示列表类,该类具有四个方法:addElement()、lastElement()、umberOfElement()以及removeLastElement()。四个方法的含义分别为:
void addElement(Object): 在列表尾部添加一个对象;
Object lastElement(): 返回列表尾部对象;
int numberOfElement(): 返回列表中对象个数;
void removeLastElement(): 删除列表尾部的对象。
现需要借助LinkedList来实现一个Stack栈类, Java代码1和Java代码2分别采用继承和组合的方式实现。
【Java代码1】
public class Stack extends LinkedList{
public void push(Object o){ //压栈
addElement(o);
}
public Object peek(){ //获取栈顶元素
return (1) ;
}
public boolean isEmpty(){ //判断栈是否为空
return numberOfElement() == 0;
}
public Object pop(){ //弹栈
Object o = lastElement();
(2) ;
return o;
}
}
【Java代码2】
public class Stack {
private (3) ;
public Stack(){
list = new LinkedList();
}
public void push(Object o){
list.addElement(o);
}
public Object peek(){//获取栈顶元素
return list. (4) ;
}
public boolean isEmpty(){//判断栈是否为空
return list.numberOfElement() == 0;
}
public Object pop(){ //弹栈
Object o = list.lastElement();
list.removeLastElement();
return o;
}
}
【问题】
若类LinkedList新增加了一个公有的方法removeElement(int index),用于删除列表中第index个元素,则在用继承和组合两种实现栈类Stack的方式中,哪种方式下Stack对象可访问方法removeElement(int index)? (5) (A. 继承 B. 组合)
第7题
阅读以下说明和Java代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
已知类 LinkedList 表示列表类,该类具有四个方法:addElement()、lastElement()、
numberOfElement()以及removeLastElement()。四个方法的含义分别为:
void addElement(Object): 在列表尾部添加一个对象;
Object lastElement(): 返回列表尾部对象;
int numberOfElement(): 返回列表中对象个数;
void removeLastElement(): 删除列表尾部的对象。
现需要借助LinkedList来实现一个Stack栈类, Java代码1和Java代码2分别采用继承
和组合的方式实现。
【Java代码1】
public class Stack extends LinkedList{
public void push(Object o){ //压栈
addElement(o);
}
public Object peek(){ //获取栈顶元素
return (1) ;
}
public boolean isEmpty(){ //判断栈是否为空
return numberOfElement() == 0;
}
public Object pop(){ //弹栈
Object o = lastElement();
(2) ;
return o;
}
}
【Java代码2】
public class Stack {
private (3) ;
public Stack(){
list = new LinkedList();
}
public void push(Object o){
list.addElement(o);
}
public Object peek(){//获取栈顶元素
return list. (4) ;
}
public boolean isEmpty(){//判断栈是否为空
return list.numberOfElement() == 0;
}
public Object pop(){ //弹栈
Object o = list.lastElement();
list.removeLastElement();
return o;
}
}
【问题】
若类LinkedList新增加了一个公有的方法removeElement(int index),用于删除列表中第index个元素,则在用继承和组合两种实现栈类Stack的方式中,哪种方式下Stack对象可访问方法removeElement(int index)? (5) (A. 继承 B. 组合)
第8题
【说明】
某绘图系统存在Point、Line、Square三种图元,它们具有Shape接口,图元的类图关系如图6-1所示。现要将Circle图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供了XCircle类,且完全满足系统新增的Circle图元所需的功能,但XCircle不是由Shape派生而来,它提供的接口不能被系统直接使用。代码6-1既使用了XCircle又遵循了Shape规定的接口,既避免了从头开发一个新的Circle类,又可以不修改绘图系统中已经定义的接口。代码6-2根据用户指定的参数生成特定的图元实例,并对之进行显示操作。
绘图系统定义的接口与XCircle提供的显示接口及其功能如下表所示:
【代码6-1】
class Circle (1) {
private (2) pxc;
public Circle(){pxc=new (3) ;
}
public void display(){
pxc. (4) ;
}
}
【代码6-2】
public class Factory{
public (5) getShapeInstance(int type){ //生成特定类实例
switch(type){
case 0: return new Point ( );
case 1: return new Rectangle ( ) ;
case 2: return new Line ( ) ;
case 3: return new Circle ( ) ;
default: return null;
}
}
public class App{
public static void main (String argv[] )
if (argv. length != l) {
System. out.println ("error parameters !");
return;
}
inttype= (new Integer (argv[0])) .intValue (
Factory factory = new Factory ( ) ;
Shape s;
s=factory, (6)
if (s==null) {
System.out.println ( "Error get instance !" )
return;
}
s.display () ;
return;
}
}
第9题
【说明】
在下面的Java程序代码中,类SalesTicket能够完成打印票据正文的功能,类 HeadDecorator与FootDecorator分别能够完成打印票据的台头和脚注的功能。
已知该程序运行后的输出结果如下所示,请填补该程序代码中的空缺。
这是票据的台头!
这是票据正文!
-------------------
这是票据的脚注!
这是票据的台头!
这是票据的脚注!
【tava程序代码】
public class SalesTicket {
public void printTicket() {
System. out. println ( "这是票据正文 ! ");
}
}
public class Decorator extends SalesTicket{
SalesTicket ticket;
public Decorator(SalesTicket t) {
ticket = t;
}
public void printTicket(){
if(ticket != null)
ticket.printTicket();
}
public class HeadDecorator extends Decorator{
public HeadDecorator(SalesTicket t) {
(1)
}
public void printTicket() {
System. out.println("这是票据的台头! ");
super.printTicket();
}
}
public class FootDecorator extends Decorator{
public FootDecorator(SalesTicket t) {
(2);
}
public void printTicket() {
super, printTicket ();
System. out.println ("这是票据的脚注!");
}
}
public class Main {
public static void main(String[] args) {
T = new HeadDecorator( (3));
T=(4);
System.out.println("------------------------------------");
T = new FootDecorator((5));
T.printTicket ();
}
}
第10题
阅读以下说明和Java程序代码,将应填入(n) 处的字句写在答题纸的对应栏内。
[说明]
在下面的 Java 程序代码中,类SalesTicket 能够完成打印票据正文的功能,类HeadDecorator 与FootDecorator 分别完成打印票据的台头和脚注的功能。已知该程序运行后的输出结果如下所示,请填补该程序代码中的空缺。这是票据的台头!这是票据正文!这是票据的脚注!------------------------这是票据的台头!
这是票据的脚注!
[Java程序代码]
public class SalesTicket {
public void printTicket() {
System.out.println("这是票据正文!");
}
}
public class Decorator extends SalesTicket{
SalesTicket ticket;
}
}
public class FootDecorator extends Decorator{
public FootDecorator(SalesTicket t) {
(2) ;
}
public void printTicket() {
super.printTicket();
System.out.println("这是票据的脚注!");
}
}
public class Main {
public static void main(String[] args) {
T = new HeadDecorator( (3) );
T. (4) ;
System.out.println("------------------------");
T = new FootDecorator( (5) );
T.printTicket();
}
}
public Decorator(SalesTicket t){
ticket = t;
}
public void printTicket(){
if(ticket != null)
ticket.printTicket();
}
}
public class HeadDecorator extends Decorator{
public HeadDecorator(SalesTicket t) {
(1) ;
}
public void printTicket() {
System.out.println("这是票据的台头!");
super.printTicket();
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!