《Java程序设计》期末复习100题
- (单选题)
分析选项中关于Java中this关键字的说法正确的是()
A. this关键字是在对象内部指代自身的引用
B. this关键字可以在类中的任何位置使用
C. this关键字和类关联,而不是和特定的对象关联
D. 同一个类的不同对象共用一个this
参考答案:
A - (单选题)
下面哪个Set是根据内容排序的
A. AbstractSet
B. LinkedHashSet
C. HashSet
D. TreeSet
参考答案:
D - (单选题)
在Java的异常处理模型中,能单独和finally语句一起使用的块是()。
A. try
B. catch
C. throw
D. throws
参考答案:
A - (单选题)
在Java接口中,下列选项中有效的方法声明是()
A. public void fn();
B. public void fn(){ };
C. protected void fn();
D. private void fn();
参考答案:
A - (单选题)
下列选项中关于Java中super关键字的说法正确的是()。
A. super关键字不仅可以指代子类的直接父类,还可以指代父类的父类
B. super关键字是在子类对象内部指代其父类对象的引用
C. 子类通过super关键字只能调用父类的方法,而不能调用父类的属性
D. 类通过super关键字只能调用父类的属性,而不能调用父类的方法
参考答案:
B - (单选题)
给的如下所示的Java代码,运行时,会产生( )类型的异常。
String s = “bnuz”;s.substring(5,7);
A. ArithmeticException
B. StringIndexOutOfBoundsException
C. NullPointerException
D. StringNullException
参考答案:
B - (单选题)
在Java中,关于构造方法,下列说法错误的是()。
A. 构造方法的名称必须与类名相同;
B. 构造方法可以带参数;
C. 构造方法不可以重载;
D. 构造方法给对象分配内存
参考答案:
C - (单选题)
对象的特征在类中表示为变量,称为类的()。
A. 对象
B. 属性
C. 方法
D. 数据类型
参考答案:
B - (单选题)
下列()不属于引用数据类型。
A. boolean
B. 数组;
C. 字符串;
D. 接口;
参考答案:
A - (单选题)
以下程序的运行结果是()。
public class Demo{
public static void main(String[] args) {
int a = 8;
System.out.println(a);
System.out.println(a++);
System.out.println(a);
}
}
A. 888
B. 889
C. 899
D. 898
参考答案:
B
11. (单选题)
在JAVA编程中,Java编译器会将java程序转换为()
A. 字节码
B. 执行代码
C. 机器代码
D. 以上所有选项都不正确
参考答案:
A
12. (单选题)
在JAVA中,()关键字用来终止循环语句。
A. return
B. continue
C. break
D. exit
参考答案:
C
13. (单选题)
给定某java 程序的main方法如下,该程序的运行结果是()。
public static void main(String[] args){
boolean boo=false;
if(boo==false){
System.out.println(“false”);
}else{
System.out.println(“true”);
}
}
A. true
B. false
C. 1
D. 0
参考答案:
B
14. (单选题)
设 MyClass为已定义的类名,下列声明MyClass类的对象mc的语句中正确的是()。
A. public MyClass a=new MyClass ( );
B. public MyClass a=MyClass ( );
C. MyClass a=new class( );
D. a MyClass;
参考答案:
A
15. (单选题)
下列选项中,定义接口Eatable的语句正确的是 ()。
A. interface Eatable{ }
B. implements Eatable{ }
C. class Eatable{ }
D. implements interface Eatable{ }
参考答案:
A
16. (单选题)
给定java程序,如下:编译运行T.java,结果是()。
public class T{
private final int a = 123;
public static void main(String [] args){
System.out.println(a++);
}
}
A. 123
B. 124
C. 编译错误
D. 运行时出现异常
参考答案:
C
17. (单选题)
下列选项中,属于java语言的关键字的是()
A. go
B. TRUE
C. implements
D. FALSE
参考答案:
C
18. (单选题)
给定JAVA代码,如下 ,运行编译后,输出结果是( )
class P{
public void fn(){
System.out.println(17 % 3);
}
}
public class T extends P{
public void fn(int i){
System.out.println(17 / 3);
}
public static void main(String args[]){
P p = new P ()
p.fn();
}
}
A. 0
B. 5
C. 2
D. 5.6666666665
参考答案:
C
19. (单选题)
有一个类MyClass,以下为其构造函数的声明,其中正确的是()。
A. public MyClass(String s){…}
B. static MyClass (String s){…}
C. public myclass (String s){…}
D. void MyClass (String s){…}
参考答案:
A
20. (单选题)
在JAVA中,已定义两个接口B和C,要定义一个实现这两个接口的类,以下语句正确的是( )
A. interface A extends B,C
B. interface A implements B,C
C. class A implements B,C
D. class A implement B,implement C
参考答案:
C
21. (单选题)
下列语句序列执行后,c的值是()。
int a = 0;
char ch =’X’;
switch( ch)
{
case ‘X’: c = 50;
case ‘Y’: c = 60;
case ‘Z’: c = 70;
default: c = 100;
}
A. 50
B. 60
C. 70
D. 100
参考答案:
D
22. (单选题)
下面选项中不能使用final修饰符修饰的是 ()。
A. 类
B. 属性
C. 方法
D. 接口
参考答案:
D
23. (单选题)
在java中,有如下代码片段:
for(int i=0; i17; i++){
if( i % 5 !=0){
continue;
}
System.out.print( i + “ ” );
if(i == 10-i){
break;
}
}
编译运行后,输出结果是()。
A. 0
B. 0 0
C. 0 5 10
D. 0 5
参考答案:
D
24. (单选题)
给定java代码,如下:
String str=null;
s.indexOf(“xy”);
运行时,会产生()类型的异常。
A. ArithmeticException
B. NullPointerException
C. IOException
D. ArrayIndexOutOfBoundsException
参考答案:
B
25. (单选题)
以下关于Java语言继承的说法正确的是( )。
A. Java中的类可以有多个直接父类
B. 抽象类不能有子类
C. Java中的接口支持多继承
D. 最终类可以作为其它类的父类
参考答案:
C
26. (单选题)
现有两个类C、D,以下描述中表示D继承自C的是( )。
A. class C extends D
B. class D implements C
C. class C implements D
D. class D extends C
参考答案:
D
27. (单选题)
在javaFx编程中,创建一个按钮需要使用组件()。
A. Pane
B. Label
C. Button
D. TextField
参考答案:
C
28. (单选题)
在某个类中存在一个方法:int fn(int x,int y),以下能作为这个方法的重载的声明的是( )。
A. public fn(float x)
B. int fn(int a,int b)
C. double fn(double x,int y)
D. int getFn(int x,int y)
参考答案:
C
29. (单选题)
下列方法定义中,正确的是()。
A. void fn( int x,int y ); { return (x * y); }
B. fn( int x,int y) { return x % y; }
C. double fn { return x; }
D. int fn( int x,int y) { return x - y; }
参考答案:
D
30. (单选题)
执行下面的语句后,c的值为( )。
String str= hello bnuz;int c=s.indexOf(‘l’);
A. 2
B. 1
C. 0
D. 3
参考答案:
A
31. (单选题)
在java中,在什么情况下类获得缺省构造方法?()
A. 类被定义时
B. 类没有其他构造方法时
C. 在类中至少定义了一个构造方法时
D. 以上皆非
参考答案:
B
32. (单选题)
现有一变量声明为boolean b;下面赋值语句中正确的是()。
A. b=true;
B. b=True;
C. b=“true”;
D. b=1;
参考答案:
A
33. (单选题)
private声明的类的方法作用范围()
A. 只可以给类本身访问
B. 只可以给同一个目录的类访问
C. 可以给所有的类访问
D. 可以给子类访问
参考答案:
A
34. (单选题)
下面的逻辑表达式中合法的是__________
A. (3+5)&&(4-3)
B. (1913)||(43)
C. 3>7&&5<100
D. (19%3)&&(2*23)
参考答案:
C
35. (单选题)
在JAVA中,如果父类中的某些方法没有方法体,并且需要由子类重写,应该使用()关键字来声明父类的这些方法.
A. final
B. static
C. abstract
D. void
参考答案:
C
36. (单选题)
给定两个java程序,如下:
public interface MyInterface{
int x = 20;
}
public class Test implements MyInterface{
private static int x;
public static void main(String[] args){
System.out.println(++x);
}
}
Test.java的编译运行结果是()。
A. 20
B. 21
C. 0
D. 1
参考答案:
D
37. (单选题)
下列哪个关键字用来定义抽象类
A. interface
B. abstract
C. extends
D. class
参考答案:
B
38. (单选题)
下列变量定义错误的是()。
A. float f=9.8
B. int a = 12
C. boolean b=true
D. double b=4.5
参考答案:
A
39. (单选题)
对于下列代码:
public class Test{
int x;
public Test (int x){ this.x = x; }
public static void main(String args[]){
Test t1, t2, t3;
t1 = new Test(5);
t2 = new Test(5);
t3 = t2;
int n = 5;
}
}
下列哪些表达式返回值为true?()
A. t1 == t2;
B. t2 == t3;
C. n == t1;
D. t1.equals(n)
参考答案:
B
40. (单选题)
在JavaFx中,为了处理鼠标点击事件,注册监听器的方法是()。
A. addOnMouseClicked
B. setOnMouseClicked
C. addMouseListener
D. setMouseListener
参考答案:
B
41. (单选题)
研究下面的Java代码:
public class Test{
public static void main(String[] args){
int a[]={10,20,30,40,50};
int sum = 0;
try{
for(int i=1;i6;i++)
sum += a[i];
System.out.println(sum= + sum);
}catch(ArrayIndexOutOfBoundsException e){
System.out.println(数组a越界);
}catch(Exception e){
System.out.println(程序有异常);
}finally{ System.out.println(程序执行结束);}
}
}
输出结果将是()。
A. 150 数组a越界 程序执行结束
B. 150 程序执行结束
C. 数组a越界 程序执行结束
D. 程序执行结束
参考答案:
C
42. (单选题)
在java 中,读取一个不存在的文件,会出现什么异常?( )
A. IOException
B. FileNotFoundException
C. NullPointerException
D. NoObjectException
参考答案:
B
43. (单选题)
接口中的成员变量被隐含地声明为
A. public final
B. public static
C. public static final
D. public abstract
参考答案:
C
44. (单选题)
下列程序运行后正确的输出结果是()。
class AA{
AA(){
System.out.print(“父类 ”);
}
}
public class BB extends AA{
BB(String str){
System.out.println(str);
}
public static void main(String[] args){
BB a = new BB(“子类”);
}
}
A. 子类
B. 父类 子类
C. 子类 父类
D. 编译错误
参考答案:
B
45. (单选题)
执行下面的语句后,a的值为( )。
String str= welcome;char a=str.charAt(1);
A. ’e’
B. ’w’
C. 'l ’
D. ‘elcome’
参考答案:
A
46. (单选题)
在Java中,在父类A中的方法method(),代码如下:
public void method(){
int a = 13;
int r = a % 3;
System.out.println®;}
在子类B中方法method()定义如下:
public void method(){
int a = 13;
System.out.println(a / 3);}
在main方法中有下面的代码,执行输出的结果是( )。
A aa = new B();
aa.method();
A. 1
B. 4.3333
C. 4
D. 3
参考答案:
C
47. (单选题)
给定Java代码片段,如下:
String str1 = new String(“bnuz”);
String str2 = new String (“bnuz”);
System.out.println(str1 == str2);运行后,这段代码将输出()。
A. true
B. false
C. 1
D. 0
参考答案:
B
48. (单选题)
在Java里,下列选项()不是实现面向对象思想的机制。
A. 封装
B. 继承
C. 多态
D. 数据型转换
参考答案:
D
49. (单选题)
以下由 for 语句构成的循环执行的次数是()。
for ( int i = 0; true ; i++) ;
A. 有语法错误,不能执行
B. 一次也不执行
C. 执行1次
D. 无限次
参考答案:
D
50. (单选题)
运行下列Java代码:
public class Test{
public static void main(String args[]){
int a = 10 ,s = 0;
do{
s += a;
}while(–a 0);
System.out.println(s);
}
}
下面选项()会出现在输出结果中。
A. 53
B. 54
C. 55
D. 56
参考答案:
C
51. (单选题)
switch(x){
case 10:
System.out.print(“10 ”);
case 20:
System.out.println(“20 ”);break;
case 30:
System.out.println(“30”);break;
}
假如X的值为10,程序输出的结果是( )。
A. 10 20
B. 10
C. 10 20 30
D. 30
参考答案:
A
52. (单选题)
下列哪行代码将输出整数7?
1: public class Main{
2: public static void main(String args[]){
3: double x=6.5;
4: System.out.println(Math.floor(x+1));
5: System.out.println(Math.ceil(x));
6: System.out.println(Math.round(x));
7: }
8: }
A. 第4行
B. 第4行和第5行
C. 第6行
D. 第4、5、6行
参考答案:
C
53. (单选题)
给定下列代码,则下列选项中能够正确编译的是哪一个?
abstract class Shape{
int x;
int y;
public abtract void draw();
}
A. abstract class Circle implements Shape{ private int radius; }
B. abstract class Circle extends Shape{ private int radius; }
C. class Circle extends Shape{ private int radius; public void draw(); }
D. class Circle implements Shape{ private int radius; public void draw(); }
参考答案:
B
54. (单选题)
给定以下代码,请问下列选项中哪个是正确的?
public interface Top{
void twiddle(String s);
}
A. public abstract class Sub implements Top{ public abstract void twiddle(String s){ }
B. public class Sub implements Top{ public void twiddle(Integer i){ } }
C. public class Sub implements Top{ void twiddle(String s){ } }
D. public class Sub implements Top{ public void twiddle(String s){ } public void twiddle(Integer i){ } }
参考答案:
D
55. (单选题)
当编译运行下列代码时,运行结果是什么?
public class Main{
int arr[]=new int[10];
public static void main(String args[]){
System.out.println(arr[1]);
}
}
A. 编译错误
B. 编译正确,但运行时出现异常
C. 输出0
D. 输出null
参考答案:
A
56. (主观题)
编写一个程序,包括两个TextField和一个Button。当单击按钮时,可以把一个文本框中的内容复制到另一个文本框中。要求用JavaFx组件实现。界面如下图所示:
参考答案:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class Main extends JFrame {
private JTextArea text1 = null;
private JTextArea text2 = null;
private JButton copyButton = null;
public Main() {
baisuper("测试");
init();
JPanel pane = new JPanel(null);
getContentPane().add(pane);
JScrollPane s1 = new JScrollPane(text1);
JScrollPane s2 = new JScrollPane(text2);
pane.add(s1);
pane.add(s2);
s1.setBounds(10, 10, 200, 300);//横坐标纵坐标长宽
s2.setBounds(260, 10, 200, 300);
getContentPane().add(copyButton, BorderLayout.SOUTH);//获取内容面板,因为JFrame不能直接添加组件,需要用getContentPane()函数获取内容面板,再在内容面板上进行添加组件
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(480, 380);
setLocationRelativeTo(null);
setVisible(true);
}
/**
* 初始化组件对象
*/
private void init(){
text1 = new JTextArea();
text2 = new JTextArea();
copyButton = new JButton("复制");
copyButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
copy();
}
});
}
private void copy(){
text2.setText(text1.getText());
}
public static void main(String[] args) {
new Main();
}
}
- (主观题)
编写程序,创建一个如下图所示的用户界面,其上共有6个按钮,点击按钮“Button 1”时显示消息“button 2 has been clicked”,点击按钮“Button 2”时显示消息“button 2 has been clicked”,点击按钮“Button 3”时显示消息“button 3 has been clicked”,以此类推…
参考答案:
package fourteen;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
public class Exercise14_3 extends JFrame{
private JButton jbtbutton1 = new JButton("Button 1");
private JButton jbtbutton2 = new JButton("Button 2");
private JButton jbtbutton3 = new JButton("Button 3");
private JButton jbtbutton4 = new JButton("Button 4");
private JButton jbtbutton5= new JButton("Button 5");
private JButton jbtbutton6 = new JButton("Button 6");
JPanel p = new JPanel();
private JLabel lab = new JLabel();
public Exercise14_3() {
p.setLayout(new FlowLayout());
p.add(jbtbutton1);
p.add(jbtbutton2);
p.add(jbtbutton3);
p.add(jbtbutton4);
p.add(jbtbutton5);
p.add(jbtbutton6);
p.add(lab);
jbtbutton1.setToolTipText("this is OK button1");//鼠标短暂停留在按钮时显示文本
jbtbutton2.setToolTipText("this is OK button2");
jbtbutton3.setToolTipText("this is OK button3");
jbtbutton4.setToolTipText("this is OK button4");
jbtbutton5.setToolTipText("this is OK button5");
jbtbutton6.setToolTipText("this is OK button6");
add(p);
lab.setHorizontalAlignment(JLabel.CENTER);//文本左右对齐、居中对其方法
jbtbutton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
lab.setText("button1 has been clicked");
}
});
Jbtbutton2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
lab.setText("button2 has been clicked");
}
});
Jbtbutton3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
lab.setText("button3 has been clicked");
}
});
Jbtbutton4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
lab.setText("button4 has been clicked");
}
});
Jbtbutton5.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
lab.setText("button5 has been clicked");
}
});
Jbtbutton6.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
lab.setText("button6 has been clicked");
}
});
}
public static void main(String[] args) {
Exercise14_3 frame = new Exercise14_3();
frame.setTitle("Exercise14_3");//设置窗体标题
frame.setSize(300,200);
frame.setLocationRelativeTo(null);//设置窗口相对于指定组件的位置。如果组件当前未显示或者 c 为 null,则此窗口将置于屏幕的*。
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);//设置为可见
}
}
- (主观题)
当编译并运行下列代码时,其运行结果是什么?
public class Main{
public static void main(String args[]){
certkiller(four);
certkiller(tee);
certkiller(to);
}
public static void certkiller(String str){
int check=4;
if(check==str.length())
System.out.print(str.charAt(check-=1));
else
System.out.print(str.charAt(0));
}
}
参考答案:
rtt
- (主观题)
当编译并运行下列代码时,其运行结果是什么?
public class Main{
public static void main(String args[]){
String s=Java;
StringBuffer sb=new StringBuffer(Java);
change(s);
change(sb);
System.out.println(s+sb);
}
public static void change(String s){
s=s.concat(Hello);
}
public static void change(StringBuffer sb){
sb.append(Hello);
}
}
参考答案:
JavaJavaHello
-
(填空题) 如果一个方法只有方法的声明,而没有方法的实现,则称为 _________ 。
参考答案:
抽象方法|abstract方法 -
(填空题) 异常处理try-catch-finally语句中,是用 _________ 语句块来捕获和处理异常。
参考答案:
catch -
(主观题)
读程序,写出程序运行结果
public class Test {public static void main(String[ ] args) {
int i=0;
while (i–0){
System.out.print(The value of i is +i);
}
System.out.print(The end);
}
}
参考答案:
The end
- (主观题)
在一大堆数据中找出重复的是一件经常要做的事情。现在,我们要处理许多整数,在这些整数中,可能存在重复的数据。
你要写一个程序来做这件事情,读入数据,检查是否有重复的数据。如果有,输出“YES”这三个字母;如果没有,则输出“NO”。输入格式:
你的程序首先会读到一个正整数n,1=n=100000。然后是n个整数。输出格式:
如果这些整数中存在重复的,就输出:
YES
否则,就输出:
NO
输入样例:
5
1 2 3 1 4
输出样例:
YES
参考答案:
- (主观题)
定义一个贷款类Loan,其中有属性:
annualInterestRate:double,表示贷款的年利率(默认值:2.5)
numberOfYears:int,表示贷款的年数(默认值:1)
loanAmount:double,表示贷款额(默认值:100)
loanDate:java.util.Date,表示创建贷款的日期
定义方法:
(1)默认的无参构造方法
(2)带指定利率、年数和贷款额的构造方法
(3)所有属性的get/set方法
(4)返回这笔贷款的月支付额getMonthlyPayment()
月支付额 = (贷款额度月利率)/(1-(1/Math.pow(1+月利率,年数12)))
(5)返回这笔贷款的总支付额getTotalPayment()
总支付额度 = 月支付额度年数12
附上如下的测试类。
public class Main{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (input.hasNext()) {
double AIR = input.nextDouble();
int NOY = input.nextInt();
double LA = input.nextDouble();
try {
Loan m = new Loan(AIR, NOY, LA);
System.out.printf(%.3f\n,m.getTotalPayment());
} catch (Exception ex) {
System.out.println(ex);
}
}
}
}
输入格式:
输入有多组数据,一个实数表示年利率,一个整数表示年数,一个实数表示贷款总额。
输出格式:
若任意一项小于或等于零,抛出IllegalArgumentException异常及相应描述(Number of years must be positive或Annual interest rate must be positive或Loan amount must be positive);有多项不符合,以不符合最前项为准;
若均符合要求,按照格式输出总额。
输入样例:
在这里给出一组输入。例如:
1 1 1000 2.0 0 2000 0 0 0
输出样例:
在这里给出相应的输出。例如:
1005.425 java.lang.IllegalArgumentException: Number of years must be positive java.lang.IllegalArgumentException: Annual interest rate must be positive
参考答案:
import java.util.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
while(true) {
double air=in.nextDouble();
int noy=in.nextInt();
double la=in.nextDouble();
if(air<=0) {
System.out.println("java.lang.IllegalArgumentException: Annual interest rate must be positive");
continue;
}
if(noy<=0) {
System.out.println("java.lang.IllegalArgumentException: Number of years must be positive");
continue;
}
if(la<=0) {
System.out.println("java.lang.IllegalArgumentException: Loan amount must be positive");
}
System.out.printf("%.3f\n",la*12*noy*(air/1200)/(1-(1/Math.pow(1+air/1200,12*noy))));
}
}
}
- (主观题)
定义一个USB接口,并通过Mouse和U盘类实现它,具体要求是:
1.接口名字为USB,里面包括两个抽象方法:
void work();描述可以工作
void stop(); 描述停止工作
2.完成类Mouse,实现接口USB,实现两个方法:
work方法输出“我点点点”;
stop方法输出 “我不能点了”;
3.完成类UPan,实现接口USB,实现两个方法:
work方法输出“我存存存”;
stop方法输出 “我走了”;
4.测试类Main中,main方法中
定义接口变量usb1 ,存放鼠标对象,然后调用work和stop方法
定义接口数组usbs,包含两个元素,第0个元素存放一个Upan对象,第1个元素存放Mouse对象,循环数组,对每一个元素都调用work和stop方法。输出样例:
我点点点
我不能点了
我存存存
我走了
我点点点
我不能点了
参考答案:
- (主观题)设计一个名为Time 的类。这个类包含:表示时间的数据域hour、minute 和second。一个以当前时间创建Time 对象的无参构造方法(数据域的值表示当前时间)。一个构造Time 对象的构造方法,这个对象有一个特定的时间值,这个值是以毫秒表示的、从1970 年1 月丨日午夜开始现在流逝的时间段(数据域的值表示这个时间)。一个构造带特定的小时、分钟和秒的Time 对象的构造方法。三个数据域hour、minute 和second 各自的get 方法。— 个名为setTime(long elapseTime)的方法使用流逝的时间给对象设置一个新时间。例如,如果流逝的时间为 555550000 毫秒,則转换为 10 小时、 10 分钟、 10 秒。编写一个测试程序,创建两个 Time 对象(使用 new Time() 和 new Time( 555550000)), 然后显示它们的小时、分钟和秒.输入格式:
输入毫秒
输出格式:
按照小时、分钟、秒显示
输入样例:
在这里给出一组输入。例如:
555550000
输出样例:
在这里给出相应的输出。例如:
Hour: 10 Minute: 19 Second: 10
参考答案:
import javax.xml.crypto.dsig.spec.XSLTTransformParameterSpec;
public class test {
public static void main(String[] args) {
Time time1=new Time();
Time time2=new Time(555550000);
Time time3=new Time(3,80,3700);
System.out.println(time1.toString());
System.out.println(time2.toString());
System.out.println(time3.toString());
}
}
class Time{
private long hour,minute,second;
public Time(){
setTime(System.currentTimeMillis());
}
public Time(long elapsedTime){
setTime(elapsedTime);
}
public Time(long hour,long minute,long second){
this.second=second%60;
this.minute=(second/60+minute)%60;
this.hour=(second/60+minute/60+hour)%60;
}
public void setTime(long elapsedTime){
long totalSeconds = elapsedTime / 1000;
second = (long)(totalSeconds % 60);
long totalMinutes = totalSeconds / 60;
minute = (long)(totalMinutes % 60);
long totalHours = (int)(totalMinutes / 60);
hour = (long)(totalHours % 24);
}
public void setTime(int hour,int minute,int second){
this.hour=hour;
this.minute=minute;
this.second=second;
}
@Override
public String toString() {
return "Hour: " + this.hour + " Minute: " + this.minute + " Second: " + this.second;
}
}
-
(主观题)
求矩阵A+B的结果,程序给出部分代码,请在原来代码基础上填写完整,完成整个程序。
import java.util.Scanner;
//矩阵相加 C = A + B //写出方法调用
public class Main {
public static Scanner scan = new Scanner(System.in);
public static void main(String[] args) {
// TODO Auto-generated method stub
int m = scan.nextInt();//矩阵的行
int n = scan.nextInt();//矩阵的列
//创建二维数组a 行m,列n//调用方法 为a输入数据 //创建二维数组b 行m,列n //调用方法,为b输入数据 //调用方法 求 a+b //输出结果 } public static void inputData(int[][] arr){ for(int i =0;iarr.length;i++) for(int j=0;jarr[i].length;j++) arr[i][j] =scan.nextInt(); } public static int[][] addMatrix(int[][]arr1,int[][]arr2){ int [][] c = new int[arr1.length][arr1[0].length]; for(int i =0;iarr1.length;i++) for(int j =0;jarr1[i].length;j++) c[i][j] = arr1[i][j] + arr2[i][j]; return c; } public static void showResult(int[][] arr){ for(int i =0;iarr.length;i++){ for(int j =0;jarr[i].length;j++) System.out.print( +arr[i][j]); System.out.println(); } } }
输入格式:
第一行通过键盘输入矩阵的行数和列数 第二行通过键盘输入矩阵A的元素,中间用空格隔开 第三行通过键盘输入矩阵B的元素 ,中间用空格隔开
输出格式:
输出矩阵相加的结果,每一行输出矩阵一行,每一个元素前面有一个空格
输入样例:
在这里给出一组输入。例如:
2 3 1 2 3 4 5 6 2 3 4 5 6 7
输出样例:
在这里给出相应的输出。例如:
3 5 7 9 11 13
参考答案:
- (主观题)
实现一个名为People的类和它的子类Emp,Emp有两个子类Faculty和Teacher。
各类实例变量描述如下:
(1)People类中的属性有:姓名name(String类型),地址addr(String类型),电话号码tel(String类型)和电子邮件地址email(String类型);
(2)Emp类中的属性有:办公室office(String类型),工资wage(double类型),受雇日期hiredate(java.util.Date类型);
(3)Faculty类中的属性有:职务称号duty(String类型);
(4)Teacher类中的属性有:学历degree(String类型),职称jobTitle(String类型);
画出People、Emp、Faculty和Teacher类的UML类图。
实现People、Emp、Faculty和Teacher类,每个类均有2个构造方法,其中1个不带任何参数,另一个是带参数的构造方法,用于初始化各类的实例变量;各类均需要提供每个实例变量的访问器和修改器。
在main方法中,提示用户输入姓名、地址、电话号码、电子邮件、办公室、工资、职务信息,创建一个Faculty对象,并输出Faculty对象的姓名、地址、电话号码、电子邮件、办公室、工资、职务信息。提示用户输入姓名、地址、电话号码、电子邮件、办公室、工资、学历、职称信息,创建一个Teacher对象,并输出Teacher对象的姓名、地址、电话号码、电子邮件、办公室、工资、学历、职称信息。
参考答案:
package zuoye;
public class People {
//属性
public String name;//姓名
public String address;//地址
public String telphone;//电话
public String email;//邮箱
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getTelphone() {
return telphone;
}
public void setTelphone(String telphone) {
this.telphone = telphone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
package zuoye;
public class Emp extends People{
public String office;//办公室
public double wage;//工资
public String hiredate;//受雇日期
public String getOffice() {
return office;
}
public void setOffice(String office) {
this.office = office;
}
public double getWage() {
return wage;
}
public void setWage(double wage) {
this.wage = wage;
}
public String getHiredate() {
return hiredate;
}
public void setHiredate(String hiredate) {
this.hiredate = hiredate;
}
}
package zuoye;
public class Faculty extends Emp{
public String duty;
public String getDuty() {
return duty;
}
public void setDuty(String duty) {
this.duty = duty;
}
}
package zuoye;
public class Teacher extends Emp {
public String degree;//学位
public String jobTitle;//级别
public String getDegree() {
return degree;
}
public void setDegree(String degree) {
this.degree = degree;
}
public String getJobTitle() {
return jobTitle;
}
public void setLevel(String level) {
This.jobTitle = jobTitle;
}
}
package zuoye;
public class Ceshi_people {
public static void main(String[] args) {
//测试
People p=new People();
p.setName("张三");
p.setAddress("x省x市x区123号");
p.setEmail("510652434@qq,com");
p.setTelphone("189xxxx6492");
System.out.println("姓名是:"+p.getName()+"地址是:"+p.getAddress()+"电话:"+p.getTelphone()+"邮箱:"+p.getEmail());
Employee e=new Employee();
e.setOffice("A座407");
e.setWage(5000.0);
e.setHiredate("16.08.16");
System.out.println("信息是:姓名是:"+p.getName()+"地址是:"+p.getAddress()+"电话:"+p.getTelphone()+"邮箱:"+p.getEmail()+"办公室:"+e.getOffice());
}
}
- (主观题)
读程序,写出程序运行结果:
class A{
public A(){
System.out.print(“A类无参构造方法 ”);
}}
class B extends A{
public B(){
System.out.print(“B类无参构造方法”);
}}
public class C{
public static void main(String[] args){
B b = new B();
}
}
参考答案:
A类无参构造方法 B类无参构造方法
- (主观题)
读程序,写出程序运行结果:
public class Demo4{
public static void main(String[] args){
String str = new String(welcome to China);
for(int i = 0; istr.length(); i += 2){
System.out.print(str.charAt(i));
} } }
参考答案:
wloet hn
- (主观题)
读程序,写出程序运行结果:
public class Demo3{
public static void main(String[] args){
int a = 54;
int b = 3;
System.out.print( a * b + 10 / 3);
}
}
参考答案:
165
- (主观题)
读程序,写出程序运行结果:
public class Demo2{
public static void main(String[] args){
try{
int a = 0;
int b = 1234 / a;
System.out.println(b);
}catch(Exception e){
System.out.print(throw exception );
}finally{
System.out.print(end);
}
}
}
参考答案:
throw exception end
- (主观题)
编写一个程序,运行结果如下图所示.
参考答案:
public class Fan {
static final int SLOW = 1;//三个名为SLOW,MEDIUM,FAST而值为1,2,3的常量,表示风扇的速度。
static final int MEDIUM = 2;
static final int FAST = 3;
private int speed = SLOW;//一个名为speed的int类型私有数据域,表示风扇的速度(默认值是SLOW)
private boolean on = false;//一个名为on的boolean类型私有数据域,表示风扇是否打开(默认值是false)
private double radius = 5;//一个名为radius的double类型私有数据域,表示风扇的半径(默认值是5)
String color = "blue";//一个名为color的string类型数据域,表示风扇的颜色(默认值是blue)
public Fan() {//构造方法
}
public int getSpeed() {//访问器方法,返回速度
return speed;
}
public void setSpeed(int speed) {//修改器方法,修改速度
if (on)
this.speed = speed;
}
public boolean getOn() {//访问器方法,返回风扇是否打开的状态
return on;
}
public void setOn(boolean on) {//修改器方法,打开风扇
this.on = on;
}
public double getRadius() {//访问器方法返回风扇半径
return radius;
}
public void setRadius(double radius) {//修改器方法修改风扇半径
if (on)
this.radius = radius;
}
public String getColor() {//访问器方法返回风扇的颜色
return color;
}
public void setColor(String color) {//修改器方法修改风扇的颜色
if (on)
this.color = color;
}
public String toString() {//toString方法返回描述风扇的字符串
if (on ) {//如果风扇打开,该方法在一个字符串中返回风扇的速度,颜色,半径
return speed + " " + color + " " + radius;
} else//如果风扇关闭,该方法就会返回一个有“fan is off”和风扇颜色及半径组成的字符串
return "fan is off" +" " +color + " "+radius;
}
}
public class Test {
public static void main(String[] args) {
Fan fan = new Fan();//创建两个Fan对象
Fan fan1 = new Fan();
fan.setOn(true);
fan.setSpeed(Fan.FAST);//将第一个对象设置成最大速度,半径为10,颜色为yellow,状态为打开
fan.setRadius(10);
fan.setColor("yellow");
System.out.println(fan.toString());
fan1.setOn(false);
fan1.setSpeed(Fan.MEDIUM);//将第二个对象设置成中等速度,半径为5,颜色8,状态为关闭
fan1.setRadius(8);
fan1.setColor("red");
System.out.println(fan1.toString());
- (主观题)
定义一个抽象类,名称为GeometricObject,此类有3个私有实例变量,分别是字符串类型的color,boolean类型的filled,以及java.util.Date类型的dateCreated,除了构造方法、修改器方法和访问器方法外还包含2个抽象方法:getArea()和getPerimeter()。
定义一个扩展自GeometricObject的新的类Circle,Circle类有1个私有的double类型变量radius,以及相应的修改器和访问器,重写GeometricObject类中的getArea方法,计算圆的面积;重写GeometricObject类中的getPerimeter方法,计算圆的周长。
定义一个扩展自GeometricObject的新的类Rectangle,继承自GeometricObject类,具有double类型的width、和height2个私有变量及它们的修改器和访问器,重写GeometricObject类中的getArea方法,计算矩形的面积;重写GeometricObject类中的getPerimeter方法,计算矩形的周长。
绘制GeometricObject类、Circle类和Rectangle类的UML图,并实现这3个类。
编写一个测试程序,提示用户输入圆的半径,一种颜色以及一个表明该圆是否填充的布尔值。程序根据用户的输入,使用输入的半径、颜色、是否填充的信息,创建一个Circle对象,并显示圆的面积、周长、颜色以及是否填充。提示用户输入矩形的宽和高,一种颜色以及一个表明该矩形是否填充的布尔值。程序根据用户的输入,使用这些宽、高、颜色、是否填充信息,创建一个Rectangle对象,并显示矩形的面积、周长、颜色以及是否填充。
参考答案:
package TestAbstract;
import java.util.Scanner;
abstract class GeometricObject {
private String color = "white";
private boolean filled = false;
public GeometricObject() {
}
public GeometricObject(String color, boolean filled) {
this.color = color;
this.filled = filled;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public boolean getFilled() {
return filled;
}
public void setFilled(boolean filled) {
this.filled = filled;
}
public abstract double getArea();
public abstract double getPerimeter();
}
class Rectangle extends GeometricObject{
private double width = 5.0;
private double height = 4.0;
public Rectangle() {
this.width = 5.0;
this.height = 4.0;
}
public Rectangle(double width, double height, String color, boolean filled) {
super(color, filled);
this.width = width;
this.height = height;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public double getArea() {
return width * height;
}
public double getPerimeter() {
return 2 * (width + height);
}
}
class Triangle extends GeometricObject{
private double side1 = 1.0;
private double side2 = 1.0;
private double side3 = 1.0;
public Triangle() {
this.side1 = 1.0;
this.side2 = 1.0;
this.side3 = 1.0;
}
public Triangle(String color, boolean filled, double side1, double side2, double side3) {
super(color,filled);
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
}
public double getSide1() {
return side1;
}
public void setSide1(double side1) {
this.side1 = side1;
}
public double getSide2() {
return side2;
}
public void setSide2(double side2) {
this.side2 = side2;
}
public double getSide3() {
return side3;
}
public void setSide3(double side3) {
this.side3 = side3;
}
public double getArea() {
double s = (side1 + side2 + side3) / 2;
return Math.sqrt(s* (s- side1) * (s - side2) * (s - side3));
}
public double getPerimeter() {
return side1 + side2 + side3;
}
}
public class TestAbstract {
public void display(GeometricObject gb) {
System.out.println(" 周长为:" + gb.getPerimeter());//加空格的原因是为了好看,可以不加,下同
System.out.println(" 面积为:" + gb.getArea());
System.out.println(" 颜色为:" + gb.getColor());
System.out.println(" 是否填充:" + gb.getFilled());
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Triangle t = new Triangle();
System.out.println("请分别输入三角形的三条边、颜色、是否填充:");
t.setSide1(input.nextDouble());
t.setSide2(input.nextDouble());
t.setSide3(input.nextDouble());
t.setColor(input.next());
t.setFilled(input.nextBoolean());
while((t.getSide1() + t.getSide2()) <= t.getSide3() || (t.getSide1() + t.getSide3()) <= t.getSide2()
||(t.getSide2() + t.getSide3()) <= t.getSide1()) {
System.out.println("三角形边长输入错误,请重新输入!" + '\n' + "请分别输入三角形的三条边:");
t.setSide1(input.nextDouble());
t.setSide2(input.nextDouble());
t.setSide3(input.nextDouble());
}
Rectangle r = new Rectangle();
System.out.println("请分别输入矩形的边长、颜色、是否填充:");
r.setWidth(input.nextDouble());
r.setHeight(input.nextDouble());
r.setColor(input.next());
r.setFilled(input.nextBoolean());
System.out.println('\n' + "三角形的信息:");//加\n的原因还是为了好看(#^.^#),下同
TestAbstract tr = new TestAbstract();
tr.display(t);
System.out.println('\n' + "矩形的信息:");
TestAbstract re = new TestAbstract();
re.display(r);
}
}
- (主观题)读程序,写出程序运行结果:
class Base {
public void fn() {
System.out.println(Base fn);
}
}
public class SubClass extends Base {
public void fn() {
System.out.print(SubClass fn);
}
public static void main(String[] args) {
new SubClass().fn();
}
}
参考答案:
SubClass fn
- (主观题)
读程序,写出程序运行结果
public class T4{
public static void main(String[] args){
String str = new String(I love bnuz for ever);
for(int i = 0; istr.length(); i+=3){
System.out.print(str.charAt(i));
}
}
}
参考答案:
Io uf e
- (主观题)
读程序,写出程序运行结果
public class T2{
public static void main(String[] args){
int a = 11; char ch = x;
switch(score % 10){
case 1 :
case 2: ch = a;
case 3: ch = b;
case 4: ch = c; break;
case 5: ch = d;
}
System.out.print(ch);
}
}
参考答案:
c
- (主观题)
本题要求在列表中存储动物,包括鸟和狗,请写代码完成下列内容:
1.定义抽象类Animal,包含私有属性name和age,为其完成setter、getter,带参构造方法,以及toString方法
2.定义子类Bird继承Animal,完成带参构造方法,重写toString方法。
3.定义子类Dog继承Animal,添加属性leg,为其完成setter,getter,完成带参构造方法,重写toString方法
4.在Main类的main方法中,定义列表list,在列表中规定只能放Dog和Bird,完成下列操作:
1.输入整数n,表示向列表中加入的对象的个数,然后向list中加入n个Animal 。
2.在加入每一个对象之前,若输入整数1,表示加入Dog对象,输入其他整数,加入Bird对象,然后通过键盘输入相关属性,创建对应对象,加入list中。
3.一次输出所有的list对象
4.键盘输入一个name,然后判断在列表中是否存在对象属性name与此相同,如果相同,输出其对象的类名,并输出对象的信息, 如果不存在对象name与键盘输入相同,显示“no this one
输入格式:
请在这里写输入格式。例如:输入在一行中给出2个绝对值不超过1000的整数A和B。
输出格式:
请在这里描述输出格式。例如:对每一组输入,在一行中输出A+B的值。
输入样例:
在这里给出一组输入。例如:
4
1
tom 3 3
2
bir 2
1
may 3 5
2
baby 3
may
3
1
tom 3 2
2
may 4
1
jerry 3 1
tina
输出样例:
在这里给出相应的输出。例如:
[Dog[leg=3, name=tom, age=3], Bird[name=bir, age=2], Dog[leg=5, name=may, age=3], Bird[name=baby, age=3]]
Dog
Dog[leg=5, name=may, age=3]
[Dog[leg=2, name=tom, age=3], Bird[name=may, age=4], Dog[leg=1, name=jerry, age=3]]
no this one
参考答案:
- (多选题)
下列有关匿名对象的说法,正确的有:
A. 匿名对象只能继承一个类或实现一个接口
B. 匿名对象可以有构造函数
C. 匿名对象不能被重复构造
D. 每个匿名对象都具有独一无二的类型
参考答案:
A, C, D
80. (多选题)
对于如下的代码片段,执行
b.func()
之后,值为27的表达式有
class A {
int i, j;
public void fun() {
i++;
j++;
}
}
class B extends A {
static int j;
public void func() {
int j = 2;
for (i = 0; i 10; i++) {
j += 3;
fun();
}
if (j 30) {
super.j = j;
} else {
/**/ B.j = j;
}
}
}
class Main {
public static void main(String[] args) throws Exception {
B b = new B();
A a = b; b.func();
}
}
A. b.i + b.j
B. ((A)b).i + ((A)b).j;
C. a.i + a.j
D. b.i + a.j
参考答案:
B, C, D
81. (主观题)
编写程序,显示从100到1000之间所有能被5和6整除的数,每行显示10个。数字之间用一个空格字符隔开。
参考答案:
public class Test {
public static void main(String[] args) {
int count = 0;
for(int i = 100;i= 1000;i++) {
if(i % 5 == 0 i % 6 == 0) {
System.out.print(i + );
count++;
}
if(count == 10) {
System.out.println();
count = 0;
}
}
}
}
-
(判断题)
抽象类是不能实例化的。
A. 正确
B. 错误
参考答案:
正确 -
(判断题)
子类和父类必须在一个包中。
A. 正确
B. 错误
参考答案:
错误 -
(主观题)
读程序,写出程序运行结果
public class T3{
public static void main(String[] args){
System.out.print (3 + 3 + 3 + 3 + (3 + 3));
}
}
参考答案:
6336
- (主观题)
写出程序运行的结果
public class T1{
int a = 1000;
public static void main(String[] args){
int a = 10;
System.out.print(a);
}
}
参考答案:
10
- (单选题)
以下关于Java语言继承的说法正确的是( )。
A. Java中的类可以有多个直接父类
B. 抽象类不能有子类
C. Java中的接口支持多继承
D. 最终类可以作为其它类的父类
参考答案:
C - (单选题)
以下关于Java语言继承的说法正确的是( )。
A. Java中的类可以有多个直接父类
B. 抽象类不能有子类
C. Java中的接口支持多继承
D. 最终类可以作为其它类的父类
参考答案:
C - (单选题)
以下关于Java语言继承的说法正确的是( )。
A. Java中的类可以有多个直接父类
B. 抽象类不能有子类
C. Java中的接口支持多继承
D. 最终类可以作为其它类的父类
参考答案:
C - (单选题)
以下关于Java语言继承的说法正确的是( )。
A. Java中的类可以有多个直接父类
B. 抽象类不能有子类
C. Java中的接口支持多继承
D. 最终类可以作为其它类的父类
参考答案:
C - (单选题)
以下关于Java语言继承的说法正确的是( )。
A. Java中的类可以有多个直接父类
B. 抽象类不能有子类
C. Java中的接口支持多继承
D. 最终类可以作为其它类的父类
参考答案:
C - (多选题)
根据下面的代码,String s = null;会抛出NullPointerException异常的有
A. if( (s!=null) & (s.length()>0) )
B. if( (s!=null) & & (s.length()>0) )
C. if( (s==null) | (s.length()==0) )
D. if( (s==null) || (s.length()==0) )
参考答案:
A, C - (多选题)
接口和抽象类描述正确的有
A. 抽象类没有构造函数
B. 接口没有构造函数
C. 抽象类不允许多继承
D. 接口中的方法可以有方法体
参考答案:
B, C - (多选题)
以下关于final关键字说法错误的是
A. final是java中的修饰符,可以修饰类、接口、抽象类、方法和属性
B. final修饰的类肯定不能被继承
C. final修饰的方法不能被重载
D. final修饰的变量不允许被再次赋值
参考答案:
A, C - (多选题)
以下可以正确获取结果集的有
A. Statement sta=con.createStatement(); ResultSet rst=sta.executeQuery(“select * from book”);
B. Statement sta=con.createStatement(“select * from book”); ResultSet rst=sta.executeQuery();
C. PreparedStatement pst=con.preparedStatement(); ResultSet rst=pst.executeQuery(“select * from book”);
D. PreparedStatement pst=con.preparedStatement(“select * from book”); ResultSet rst=pst.executeQuery();
参考答案:
A, D
95. (填空题)若变量s为int型, 且其值大于0, 则表达式s%2+(s+1)%2的值为 _________ .
参考答案:
1
-
(填空题)CPU 内用于暂存指令、数据和地址的高速存储部件,称为 _________ 。
参考答案:
寄存器 -
(单选题)
什么是裸机?
▁▁▁▁▁ 的计算机称为裸机。
A. 没有机箱
B. 没有外部设备
C. 没有软件系统
D. 没有应用软件
参考答案:
C -
(单选题)
已知代码如下:上述代码结果是( )。
A. World Hello
B. World MLDN
C. Hello MLDN
D. World World
参考答案:
B
99. (单选题)
下面( )不是创建数组的正确语句。
A. float f[ ][ ] = new float[6][6];
B. float f[ ] = new float[6];
C. float f[ ][ ] = new float[ ][6];
D. float[ ][ ] f = new float[6][ ];
参考答案:
C
100. (主观题)
成绩文件处理:
设计学生类Student,属性:学号(整型);姓名(字符串),选修课程(名称)及课程成绩(整型)。编写一个控制台程序,能够实现Student信息的保存、读取。具体要求:(1)提供Student信息的保存功能:通过控制台输入若干个学生的学号、姓名以及每个学生所修课程的课程名和成绩,将其信息保存到data.dat中;(2)数据读取显示:能够从data.dat文件中读取学生及其课程成绩并显示于控制台。(要求,学号和课程成绩按照整数形式(而非字符串形式)存储)
参考答案:
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) {
ObjectInputStream oi = null;
ObjectOutputStream oo = null;
Scanner sc = new Scanner(System.in);
try{
oo = new ObjectOutputStream(new FileOutputStream("D:\\data.dat"));
oi = new ObjectInputStream(new FileInputStream("D:\\data.dat"));
while(true){
System.out.println("write:向文件写入数据");
System.out.println("read: 从文件读出数据");
System.out.println("exit: 退出");
System.out.println("\n请输入命令:");
String ju = sc.next();
if("exit".equalsIgnoreCase(ju)){
System.out.println("程序结束");
break;
}
switch (ju){
case "write":{
//用Set存储多个对象
Set<Student> set = new HashSet<>();
System.out.println("\n开始向文件中写入数据\n");
System.out.println("请输入学生个数:");
int n = sc.nextInt();
for (int i = 1; i <= n; i++) {
System.out.println("请输入第" + i + "名同学的学号、姓名:");
Student stu = new Student(sc.nextInt(), sc.next());
System.out.println("请输入该学生的课程个数:");
int m = sc.nextInt();
for (int j = 1; j <= m; j++) {
System.out.println("请输入第" + j + "门课程的名称、学分");
stu.setCourse(sc.next(), sc.nextInt());
}
set.add(stu);
}
oo.writeObject(set);
System.out.println("\n写入结束,请输入下一条指令");
break;
}
case "read":{
System.out.println("\n开始从文件中读出数据\n");
Set<Student> set = (Set) oi.readObject();
for(Student stu: set){
System.out.println(stu.toString());
}
System.out.println("\n读出结束,请输入下一条指令");
break;
}
default:{
System.out.println("\n无此命令,请重新输入");
}
}
}
}catch (ClassNotFoundException e1){
e1.printStackTrace();
}
catch (IOException e2){
e2.printStackTrace();
}finally {
try{
//关闭文件
oi.close();
oo.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
}
class Student implements Serializable{
private int no;
private String name;
private TreeMap<String, Integer> course;
public Student(int no, String name) {
this.no = no;
this.name = name;
course = new TreeMap<>();
}
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public TreeMap<String, Integer> getCourse() {
return course;
}
public void setCourse(String name, int score) {
this.course.put(name, score);
}
@Override
public String toString() {
return "no:" + no +
"\nname:" + name +
"\ncourse:" + course + "\n";
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return no == student.no;
}
@Override
public int hashCode() {
return Objects.hash(no);
}
}
本文地址:https://blog.csdn.net/weixin_41422387/article/details/112246235
推荐阅读