java第三章作业答案
- 格式:docx
- 大小:53.50 KB
- 文档页数:7
实验10import java.util.*;public class shiyan10{public static void main(String[] args){int a=0,b=0,c=0,max=0;Scanner reader=new Scanner(System.in);System.out.println("从键盘输入第一个整数");a=reader.nextInt();System.out.println("从键盘输入第二个整数");b=reader.nextInt();System.out.println("从键盘输入第三个整数");c=reader.nextInt();if(a>b)max=a;elsemax=b;if(c>max)max=c;System.out.println("最大的数是"+max);}}//在程序中输入三个整数,比较它们的大小,输出最大的数实验11public class shiyan11{public static void main(String[] args){int s=0;for(int i=0;i<100;i++){s=s+i;i++;}System.out.println("1+3+5+···+99="+s);}}//用for循环语句求1+3+5+···+99的值实验12import java.util.*;public class shiyan12{public static void main(String[] args){int a=0,i=1,s=0;Scanner reader=new Scanner(System.in);while(a<50||a>100){System.out.println("从键盘输入一个50~100的整数");a=reader.nextInt();}System.out.println("你输入的数是"+a);while(i<=a){s=s+i;i++;}System.out.println("1+2+3+···+"+a+"="+s);}}//编写从键盘输入一个范围在50~100的整数,如果不正确,则继续输入;然后求1到输入整数的累加实验13public class shiyan13{public static void main(String[]args){int i=100,s=0;do{s=s+i;i--;}while(i>0);System.out.println("100+99+98+···+2+1="+s);}}//用do-while语句求100+99+···+2+1的值实验14import java.util.*;public class shiyan14{public static void main(String[] args)int a=-1;Scanner reader=new Scanner(System.in);System.out.println("从键盘输入0~6的整数");a=reader.nextInt();while(a<0||a>6){System.out.println("输入错误");System.out.println("从键盘输入0~6的整数");a=reader.nextInt();}switch(a){case 0:System.out.println("今天是星期日");break;case 1:System.out.println("今天是星期一");break;case 2:System.out.println("今天是星期二");break;case 3:System.out.println("今天是星期三");break;case 4:System.out.println("今天是星期四");break;case 5:System.out.println("今天是星期五");break;case 6:System.out.println("今天是星期六");break;default:System.out.println("输入错误");break;}}}//让用户通过输入一个0~6的整数,显示今天是xingqijipublic class shiyan15{public static void main(String[] args){for(int i=1;i<10;i++){if(i==6)break;System.out.println(""+i);}System.out.println("\n显示完毕");for(int i=1;i<10;i++){if(i%2==0)continue;System.out.println(""+i);}System.out.println("\n显示完毕");}}//先显示1~5各个整数,然后再显示1~10的各个奇数。
明解JAVA第三章答案练习3-1package candle1220;import java.util.Scanner;public class Nightwatch {public static void main(String[] args){Scanner stdIn=new Scanner(System.in);System.out.print("整数值");int n=stdIn.nextInt();if(n>0)System.out.println("其绝对值是"+(n));elseSystem.out.println("其绝对值是"+(-n));}}练习3-2package candle1220;import java.util.Scanner;public class Nightwatch {public static void main(String[] args){Scanner stdIn=new Scanner(System.in);System.out.print("整数A:");int a=stdIn.nextInt();System.out.print("整数B:");int b=stdIn.nextInt();if(a%b==0)System.out.println(b+"是"+a+"的约数");elseSystem.out.println(b+"不是"+a+"的约数");}}练习3-3同样可以运⾏练习3-4import java.util.Scanner;public class New{public static void main(String[] args){Scanner input=new Scanner (System.in);System.out.print("a:");int a=input.nextInt();System.out.print("b:");int b=input.nextInt();if(a>b)System.out.print("a更⼤");elseif(a==b)System.out.print("⼀样⼤");elseSystem.out.print("b更⼤");}}练习3-5import java.util.Scanner;public class New{public static void main(String[] args){Scanner input=new Scanner (System.in);System.out.print("请输⼊⼀个正整数:");int a=input.nextInt();if(a<=0)System.out.print("请输⼊正整数");else if(a%5==0)System.out.print("该值可以被5整除");elseSystem.out.print("该值不可以被5整除"); }}练习3-6import java.util.Scanner;public class New{public static void main(String[] args){Scanner input=new Scanner (System.in);System.out.print("请输⼊⼀个正整数:");int a=input.nextInt();if(a<=0)System.out.print("请输⼊正整数");else if(a%10==0)System.out.print("该值是10的倍数");elseSystem.out.print("该值不是10的倍数"); }}练习3-7import java.util.Scanner;public class New{public static void main(String[] args){Scanner input=new Scanner (System.in);System.out.print("请输⼊⼀个正整数:");int a=input.nextInt();if(a<=0)System.out.print("请输⼊正整数");else if(a%3==0)System.out.print("该值可以被3整除");else if(a%3==1)System.out.print("该值除以3余1");elseSystem.out.print("该值除以3余2");}}练习3-8import java.util.Scanner;public class New{public static void main(String[] args){Scanner input=new Scanner (System.in);System.out.print("请输⼊分数:");int a=input.nextInt();if(a>=0&&a<60){System.out.println("不及格");}else if(a>=60&&a<70){System.out.println("及格");}else if(a>=70&&a<80){System.out.println("良");}else if(a>=80&&a<=100){System.out.println("优");}else{System.out.println("请输⼊合理的分数");} }}练习3-9import java.util.Scanner;public class New{public static void main(String[] args){Scanner input=new Scanner (System.in); System.out.print("a=:");int a=input.nextInt();System.out.print("b=:");int b=input.nextInt();System.out.print(a>b?a:b);}}练习3-10import java.util.Scanner;public class New{public static void main(String[] args){Scanner input =new Scanner (System.in); System.out.print("a=");int a=input.nextInt();System.out.print("b=");int b=input.nextInt();if(a>=b)System.out.print(a-b);elseSystem.out.print(b-a);}}练习3-11import java.util.Scanner;public class New{public static void main(String[] args){Scanner input =new Scanner (System.in); System.out.print("a=");int a=input.nextInt();System.out.print("b=");int b=input.nextInt();int c=a-b;if(c>10||c<-10)System.out.print("它们的差值⼤于等于11");elseSystem.out.print("它们的差值⼩于等于10"); }}练习3-12import java.util.Scanner;public class New{public static void main(String[] args){Scanner input=new Scanner(System.in); System.out.print("a=");int a =input.nextInt();System.out.print("b=");int b =input.nextInt();System.out.print("c=");int c =input.nextInt();int min1=a<b?a:b;int min=min1<c?min1:c;System.out.print(min);}}练习3-13import java.util.Scanner;public class New{public static void main(String[] args){Scanner input=new Scanner (System.in); System.out.print("a=");int a =input.nextInt();System.out.print("b=");int b =input.nextInt();System.out.print("c=");int c =input.nextInt();int mid1=a<b?b:a;int mid=mid1<c?mid1:c;System.out.print(mid);}}练习3-14// 计算两个整数值中较⼩的值和较⼤的值import java.util.Scanner;class New {public static void main(String[] args) {Scanner stdIn = new Scanner(System.in); System.out.print("整数a:");int a = stdIn.nextInt();System.out.print("整数b:");int b = stdIn.nextInt();if(a==b){System.out.print("两个整数相等");}else{int min, max; // 较⼩的值/较⼤的值if (a < b) { // 如果a⼩于bmin = a;max = b;}else{ // 否则min = b;max = a;}System.out.println("较⼩的值是" + min + "。
Java编程基础智慧树知到课后章节答案2023年下潍坊学院潍坊学院第一章测试1.下列关于JDK、JRE和JVM关系的描述中,正确的是()。
A:JRE中包含了JDK,JVM中包含了JRE。
B:JDK中包含了JRE,JRE中包含了JVM。
C:JDK中包含了JRE,JVM中包含了JRE。
D:JRE中包含了JDK,JDK中包含了JVM。
答案:JDK中包含了JRE,JRE中包含了JVM。
2.下面哪种类型的文件可以在Java虚拟机中运行()A:.javaB:.jreC:.exeD:.class答案:.class3.下面关于javac命令作用的描述中,正确的是()。
A:可以将编写好的Java文件编译成.class文件B:可以把文件压缩C:可以把数据打包D:可以执行java程序答案:可以将编写好的Java文件编译成.class文件4.如果jdk的安装路径为:c:\jdk,若想在命令窗口中任何当前路径下,都可以直接使用javac和java命令,需要将环境变量path设置为以下哪个选项()A:c:jreB:c:jdkinC:c:jdkD:c:jrein答案:c:\jdk\bin5.下列Java命令中,哪一个可以编译HelloWorld.java文件()A:javac HelloWorld.javaB:javac HelloWorldC:java HelloWorldD:java HelloWorld.java答案:javac HelloWorld.java6.下列选项中,哪些是Java语言的特性()A:面向对象B:支持多线程C:跨平台性D:简单性答案:面向对象;支持多线程;跨平台性;简单性7.下列关于JRE目录的描述中,正确的是()?A:JRE是一个小型的数据库 B:JRE是Java运行时环境的根目录 C:JRE用于存放一些可执行程序 D:JRE是Java Runtime Environment的缩写答案:JRE是Java运行时环境的根目录;JRE是Java Runtime Environment的缩写8.在Eclipse集成开发环境中,选择【new】->【class】可以创建一个java类。
第一题:public class disanzhangxiti1{public static void main (String args[]){char x='你',y='e',z='吃';if(x>'A'){y='爱';z='情';}elsey='我';z='她';System.out.println(" "+x+y+z);}}第二题:public class disanzhangxiti2{public static void main (String args[]){char c='\0';for(int i=1;i<=4;i++){switch(i){case 1: c='b';System.out.print(c);case 2: c='e';System.out.print(c);break;case 3: c='p';System.out.print(c);default: System.out.print("!");}}}}第三题:public class disanzhangxiti3{public static void main (String args[]){int sum=0,a=1;int i=1;while(i<=10){sum=sum+a;i=i+1;a=a*i;}System.out.println("sum="+sum);}}第四题:public class disanzhangxiti4{public static void main(String agrs[]){int i,j,count=0;for(j=2;j<=100;j++){for(i=2;i<=j/2;i++){if(j%i==0)break;}if(i>j/2){count++;System.out.println(""+j+"");}}System.out.println("count="+count);}}第五题:public class disanzhangxiti5{public static void main(String agrs[]){double sum=0,a=1,i=1;do{i++;sum=sum+a;a=a*(1.0/i);}while(i<=3);System.out.println("sum="+sum);}}public class disanzhangxiti5_for{public static void main(String agrs[]){double sum=0,a=1,i=1;for(i=1;i<=2;i++){sum=sum+a;a=a*(1.0/i);}System.out.println("sum="+sum);}}第六题:public class disanzhangxiti6{public static void main(String agrs[]){int a,i,sum;for(a=2;a<=1000;a++){for(sum=0,i=1;i<=a/2;i++)if(a%i==0)sum+=i;if(sum==a)System.out.println(a);}}}第七题:public class disanzhangxiti7{public static void main(String args[]){long sum=0,a=8,item=a,n=10,i=1;for(i=1;i<=n;i++){sum=sum+item;item=item*10+a;}System.out.println(sum);}}public class disanzhangxiti7_while{public static void main(String args[]){long sum=0,a=8,item=a,n=10,i=1;while(i<=10){i++;sum=sum+item;item=item*10+a;}System.out.println(sum);}}第八题:public class disanzhangxiti8{public static void main(String agrs[]){int sum=0,i,n=1;for(i=1;i<=n;i++){sum=sum+i;if(sum<8888)n++;if(sum>=8888)break;}System.out.println("sum="+sum);System.out.println("i="+i);}}。
作业_31.参考课件中的例子,根据要求,请用Swing编写如下菜单程序:要求:(1)点击“选项对话框”时,分别弹出下列对话框:并在命令行中输出输入框、确认框的输入信息;(2)点击“文件选择器”时,分别弹出文件打开、保存对话框,并在命令行中输出打开、保存的文件信息;(3)点击“颜色选择器”时,弹出颜色板改变窗体的背景色。
import javax.swing.*;import java.awt.Color;import java.awt.event.*;public class JFrameTest extends JFrame {private static final long serialVersionUID = 321L;JMenu menu1;JMenu menu2;JMenu menu3;JFileChooser fileChooser;static JColorChooser colorChooser;static JFrameTest jf;static JPanel p;public JFrameTest(){jf=this;setTitle("对话框、菜单综合例子");setSize(600,400);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);fileChooser=new JFileChooser("d:\\");setMenu();JMenuBar bar=new JMenuBar();setJMenuBar(bar);bar.add(menu1);bar.add(menu2);bar.add(menu3);p=new JPanel();add(p);setVisible(true);}public void setMenu(){menu1=new JMenu("选项对话项");menu2=new JMenu("文件选择器");menu3=new JMenu("颜色选择器");JMenuItem item1=new JMenuItem("显示输入框");JMenuItem item2=new JMenuItem("显示消息框");JMenuItem item3=new JMenuItem("显示确认框");JMenuItem item4=new JMenuItem("打开文件对话框");JMenuItem item5=new JMenuItem("保存文件对话框");JMenuItem item6=new JMenuItem("选择窗体背景颜色");item1.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent arg0) {Object result=JOptionPane.showInputDialog(jf,"请输入您的身份证号码:","输入框",JOptionPane.QUESTION_MESSAGE);if(result!=null)System.out.println("输入框内容:"+(String)result);}});item2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent arg0) {JOptionPane.showMessageDialog(jf, "吸烟有害健康", "消息框", JOptionPane.WARNING_MESSAGE);}});item3.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent arg0) {int i=JOptionPane.showConfirmDialog(jf, "是否保存对“myinformation.doc”的更改?", "确认框", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);if(i==0)System.out.println("确认框:选择了“是");if(i==1)System.out.println("确认框:选择了“否");if(i==2)System.out.println("确认框:选择了“取消");}});item4.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){int i=fileChooser.showOpenDialog(jf);if(i==0)System.out.println("选择打开的文件是:"+fileChooser.getSelectedFile().getAbsolutePath());}});item5.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){int i=fileChooser.showSaveDialog(jf);if(i==0)System.out.println("选择保存的文件是:"+fileChooser.getSelectedFile().getAbsolutePath());}});item6.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){Color color=JColorChooser.showDialog(jf, "选择窗体背景颜色",p.getBackground());if(color!=null){jf.setBackground(color);p.setBackground(color);}}});menu1.add(item1);menu1.add(item2);menu1.add(item3);menu2.add(item4);menu2.add(item5);menu3.add(item6);}public static void main (String args[]){ new JFrameTest();}}2、请按要求创建线程:(1)用继承Thread类方法创建线程MyThread类,该线程的功能是输出26个英文字母(大写,不换行),每输出一个字母后,休眠时间是500—2000毫秒的随机数;(2)用实现Runnable接口方法创建线程MyRunnalbe类,该线程的功能是输出26个英文字母(小写,不换行),每输出一个字母后,休眠时间是500—2000毫秒的随机数;(3)在主类中分别创建这两个类的对象t1、t2,并启动。
第三章习题解答3.1什么是面向对象技术?它有什么优点?通过面向对象的方式,将现实世界的物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。
程序设计者考虑的是对象的描述、对象间的关系、类的管理、什么时候和什么地方调用对象的哪一种方法。
面向对象技术的最大优点是有效支持重用,使得大的程序也变得相对容易维护。
3.2面积对象的程序设计和面向过程的程序设计有什么区别?面向过程语言编程模式是:程序=数据结构+算法编程时需要考虑和内容是的程序什么、怎么做、重点考虑每个实现的细节。
面向对象的语言的编程模式是:程序=对象+消息程序设计者考虑的是对象的描述、对象间的关系、类的管理、什么时候和什么地方调用对象的哪一种方法。
3.3在程序中类和对象有什么区别?类是同一种对象的描述,类概括了同类对象的共有性质:数据和方法。
类的每个对象都有自己的标识,但它们具有相同的一级属性和提供相同的方法。
在程序中,对象的名称用于捐弃引用对象,对象的成员变量用于存储对象的状态值,对象和方法用于描述对象的行为。
3.4 类变量和实例变量,以及类方法和实例方法的区别。
加载类之前创建对象之后调用方法访问权限成员变量实例变量不分配内存各个对象之间各自分配独立的内存空间对象名.实例变量名被实例方法,构造方法访问类变量直接分配内存各个对象之间共享这段已经分配完的内存对象名.类变量名;类名.类变量名被实例方法,类方法,构造方法访问成员方法实例方法不分配入口地址共享一个入口地址对象名.实例方法名实例变量、类变量,实例方法、类方法类方法直接分配入口地址共享这个入口地址对象名.类方法名;类名.类方法名类变量、类方法3.5 子类能继承超类的哪些成员变量和方法?同包继承不同包继承(import进来的)私有(private)不继承不继承友好(缺省默认)继承不继承受保护(protected)继承继承共有(public)继承继承3.6 子类在什么情况下能隐藏超类的成员变量和方法?解:在子类重载父类的成员变量、方法的情况下。
第3章习题解答1.如何定义方法?在面向对象程序设计中方法有什么作用?答:方法的定义包括方法名、方法形参、方法的返回值类型和方法体四部分,方法只能在类中定义。
方法是对象的动态特征的描述,对象通过方法操作属性,进而改变对象的状态,完成程序所预期的功能。
2.定义一个Dog类,有名字、颜色、年龄等属性,定义构造方法用来初始化类的这些属性,定义方法输出Dog的信息。
编写应用程序使用Dog。
答:public class Dog{private String name。
private String color。
private String age。
Dog(String n,String c,String a>{name = n。
color = c。
age = a。
}public String toString(> {return name + "," + color + "," + age。
}public static void main(String args[]> {Dog dog = new Dog("小白", "白色", "2岁">。
System.out.println(dog.toString(>>。
}}3.什么是访问控制修饰符?修饰符有哪些种类?它们各有何作用?答:访问控制修饰符是对类、属性和方法的访问权限的一种限制,不同的修饰符决定了不同的访问权限。
访问控制修饰符有3个:private、protected、public,另外还有一种默认访问权限。
各个修饰符的作用如下表所示:B:包中的类C:所有子类D:本类A:所有类11.定义一个表示学生的类Student,包括的成员变量有:学号、姓名、性别、年龄;成员方法有:获得学号、姓名、性别、年龄;修改年龄。
并书写Java程序创建Student类的对象及测试其方法的功能。
JAVA期末复习题及答案——第三章一、填空题1.阅读下列程序段int i=3,j;outer:while(i>0){j=3;inner:while(j>0){if(j<2) break outer;System.out.println(j+”and”+i);j--;}i--;}被输出到屏幕第一行的结果是 3 and 3 。
2.阅读下列代码段int x=3;while(x<9)x+=2;x++;while语句成功执行的次数是 3次。
3.已知a=3,b=9,则表达式a>b?a,b的值为 9 。
4.关系运算符的运算结果一定是布尔数据类型。
5. do-while 表示的循环体会至少执行一次。
6.已知x=12,y=6,z=false,则下列表达式的值分别为(表达式之间没有执行的先后顺序):100= =x+y falsex=y+10 16z||y>x false!(y*3<=x*4) false7.跳转语句continue用于循环体时表示退出本次循环,跳转语句break用于循环体时表示退出整个循环。
二、选择题1.阅读下列程序if(x= =0) {System.out.println(“冠军”);else if(x>-3) {System.out.println(“亚军”);else {System.out.println(“季军”);若要求打印字符串“季军“,则变量x的取值范围是:DA、x=0&x<=-3B、x=0C、x>-3D、x<=-32.阅读下面程序import javax.swing.JOptionPane;public class BreakLabelTest{public static void main(String args[]){String output=””;stop:{for(int row=1;row<=10;row++){for(int column=1;column<=5;column++){if(row= =5)break stop;output+=”* “;}output+=”\n”;}output+=”\nLoops terminated normally”;}JOptionPane.showMessageDialog{null,output,”用一个标志测试break语句”,RMATION_MESSAGE);System.exit(0);}}程序运行结果是:CA、窗口中有5行* * * * *B、窗口中有5行* * * *C、窗口中有4行* * * * *D、窗口中有6行* * * * *3.下列语句中,属于多分支语句的是:BA、if语句B、switch语句C、do while语句D、for语句4.阅读下列代码public class Test2005{public static void main(String args[]){String s=”Test”;switch(s){case “Java”: System.out.print(“Java”); break;case “Language”: System.out.print(“Language”); break;case “Test”: System.out.print(“Test”); break;}}}其运行结果是:DA、JavaB、LanguageC、TestD、编译出错5.下列代码中if(x>0) {System.out.println(“first”);}else if(x>-3){System.out.println(“second”);}else {System.out.println(“third”);}要求打印字符串为“second”时,x的取值范围是:AA、x<=0并且x>-3B、x>0C、x >-3D、x<=36.下列哪个说法是正确的?BA. if语句和else语句必须成对出现B. if语句可以没有else语句对应C. switch后的表达式可以是long型D. 每个switch结构中必须有default结构7.以下语句中有语法错误的是:BA. for(; ;);B. for(int i=0, i<10, i++){}C. if(a<0) ++a;D.do{a=false;} while(a=true);8.while循环和do_while循环的区别是:DA、没有区别,这两种结构在任何情况下效果都是一样的B、while循环的执行效率比do_while循环的执行效率高C、while先循环后判断,所以循环体至少执行一次D、do_while先循环后判断,所以循环体至少执行一次9.关于for循环和while循环,下面哪个说法是正确的?BA、while循环能实现的操作,for循环都能实现B、while循环的判断条件一般是程序的结果,for循环的判断条件一般是非程序的结果C、两种循环在任何时候都可以互换,所以会使用一种就可以D、两种循环结构中都必须有循环体,循环体不能为空10.下面说法正确的是:CA、程序执行到break语句时一定会结束所有的循环B、程序执行到continue语句时会结束当前循环C、break语句和continue语句都可以和标签协同使用D、break语句和continue语句的作用相同三、判断题1.switch语句中switch后面的表达式可以是整型,字符型,还可以是复合数据类型。
第3章习题解答1.如何定义方法?在面向对象程序设计中方法有什么作用?答:方法的定义包括方法名、方法形参、方法的返回值类型和方法体四部分,方法只能在类中定义。
方法是对象的动态特征的描述,对象通过方法操作属性,进而改变对象的状态,完成程序所预期的功能。
2.定义一个Dog类,有名字、颜色、年龄等属性,定义构造方法用来初始化类的这些属性,定义方法输出Dog的信息。
编写应用程序使用Dog。
答:public class Dog{private String name;private String color;private String age;Dog(String n,String c,String a){name = n; color = c; age = a;}public String toString() {return name + "," + color + "," + age;}public static void main(String args[]) {Dog dog = new Dog("小白", "白色", "2岁");System.out.println(dog.toString());}}3.什么是访问控制修饰符?修饰符有哪些种类?它们各有何作用?答:访问控制修饰符是对类、属性和方法的访问权限的一种限制,不同的修饰符决定了不同的访问权限。
访问控制修饰符有3个:private、protected、public,另外还有一种默认访问权限。
各个修饰符的作用如下表所示:B:包中的类C:所有子类D:本类A:所有类:所有类4.阅读程序,写出程序的输出结果class A{private int privateVar;A(int _privateVar){privateVar=_privateVar;}boolean isEqualTo(A anotherA){if(this.privateVar == anotherA.privateVar)return true;elsereturn false;}}public class B{public static void main(String args[]){A a = new A(1);A b = new A(2);System.out.println(a.isEqualTo(b));}}程序的输出结果为:false5.阅读程序,写出程序的输出结果public class Test {public static void main(String[] args) {int x;int a[] = { 0, 0, 0, 0, 0, 0 };calculate(a, a[5]);System.out.println("the value of a[0] is " + a[0]);System.out.println("the value is a[5] is " + a[5]);}static int calculate(int x[], int y) {for (int i = 1; i < x.length; i++)if (y < x.length)x[i] = x[i - 1] + 1;return x[0];}}程序的输出结果为:the value of a[0] is 0the value is a[5] is 56.阅读程序,写出程序的输出结果public class Test {public static void main(String[] args) {String str1 = new String("Java");String str2 = new String("Java");System.out.println(str1 == str2);}}程序的输出结果为:false7.阅读下列程序,程序中已经指明错误位置,请说出错误原因。
第3章习题解答1. Java语言的注释有哪几种?分别给出一个例子。
答:Java语言的注释有3种,分别是单行注释、多行注释和文档注释。
单行注释的例子如下:public static Point origin = new Point(0, 0); //类初始化时,创建一个原点实例多行注释的例子如下:/* 类初始化时,创建一个原点实例 */public static Point origin = new Point(0, 0);文档注释的例子如下:/**** @类名:Point* @类简介:坐标点类,可以初始化其坐标x和y。
* @编程人:林福平* @编程日期:2012-8-9* @修改日期:2012-8-10**/2. Java语言中分隔符有哪几种?空白符有哪些?答:Java语言中的分隔符有空白符、注释和普通分隔符三种。
Java语言中的空白符(White Space)包括空格(SP,space)、制表符(‘\t’,Tab键)、走纸换页(‘\f’)、回车(‘\r’)和换行(‘\n’)。
3. 简述标识符的用途。
下列字符串中,哪些是标识符?PIx2 -length a+b _bytes $long MIN_VALUE答:Java语言中的标识符用于对类、方法、变量、类型、数组和文件等进行命名。
上述字符串中,以下这些是Java语言的标识符:PIx2 _bytes $long MIN_VALUE4. 下列字符串中,哪些是关键字?true for int null $float _double答:上述字符串中,以下这些是Java语言的关键字:true for int null5. Java语言的基本数据类型分为那几大类?答:Java语言的基本数据类型分为数值类型(包括整数类型和浮点类型)、字符类型(char)和布尔类型(Boolean)。
整数类型有byte、 short、 int和long。
浮点类型有float和double。
一、选择题参考答案:1.B2.A3.D4.C5.A6.A7.B8.B9.A 10.A 11.A 12.D二、填空题参考答案:1.覆盖2.参数3.方法体4.public static final5.抽象6.extends7.Student String 8.class static三、简答题1.子类能够继承父类的哪些成员变量和方法?①子类可以继承父类的属性,包括实例成员变量和类成员变量。
②子类可以继承父类除构造方法以外的成员方法,包括实例成员方法和类成员方法。
2.this和super关键字的作用是什么?0使用this关键字可实现调用本类的构造方法及调用被方法隐藏的成员变量。
0super关键字可调用父类的构造方法及调用父类的同名成员。
03.什么是方法的重载?什么是方法的覆盖?0方法重载是指同一个类中多个方法享有相同的名字,但是这些方法的参数必须不同,参数不同是,指或者是参数的个数不同,或者是参数类型不同,或者是不同类型参数的排列顺序不同。
0类继承的过程中,子类方法跟父类方法名字相同,并且传递的参数完全一样,称子类覆盖了父类的方法。
04.什么是多态?使用多态有什么优点?0多态的表现形式主要有方法的重载和方法的覆盖。
0使用多态可根据同名方法的参数不同实现不能的功能或同一类对象根据赋予的引用对象的不同来实现不同的行为。
05.什么是包?定义包的作用是什么?0包是java提供的一种命名空间机制,实现了对类的存放和引用位置的管理,包对应一个文件夹。
0java的类库就是用包来实现了类的分类和存放,每个包中都有多组相关的类和接口。
6.什么是接口?接口中的变量和方法各有什么要求?接口是特殊的抽象类,可以想象为一个“纯”抽象类,就是一组具有特定意义的静态常量和抽象方法的集合。
属性定义时必须赋初值,是常量。
属性性前修饰符时默认该属性由final、static修饰。
接口中的方法必须是抽象方法。
7.类BB是AA类的子类。
类AA和类BB中都定义了变量x和method()方法,这种情况称为子类隐藏了父类的同名变量x并覆盖了父类的method()方法.8.输出结果为:AABB若将main()方法中的语句改为:BB b=new BB(10); 程序输出的结果是什么?AAAAAABBBB四、编程1.编写一个类,描述学生的学号、姓名、成绩。
第3章作业参考答案
1.填空题(1)类
(2)属性new
(3)thisstatic
2.选择题
简答题
(1)回答要点
面向对象的方法主要是把事物给对象化,包括其属性和行为。
面向对象编程更贴近实际生活的思想。
总体来说面向对象的底层还是面向过程,面向过程抽象成类,然后封装,方便使用就是面向对象(万物皆对象)。
(2)回答要点
•格式区别
构造方法和类名相同,并且没有返回类型,也没有返回值。
普通成员方法可以任意起名,必须有返回类型,可以没有返回值。
•作用区别
构造方法用于创立对象,并进行初始化值。
普通成员方法是用于完成特定功能的。
•调用区别
构造方法是在创立对象时被调用的,一个对象建立,只调用一次相应构造函数。
普通成员方法是由创立好的对象调用,可以调用屡次。
(3)回答要点
Java的垃圾回收机制是Java虚拟机提供的能力,用于在空闲时间以不定时的方式动态回收无任何引用的对象占据的内存空间,回收之前会自动调用finalize方法,用于清理资源。
(4)回答要点
对象是类的实例,类是对象的模板
4.编程题
(1)源代码:参考本章资料文件夹下“作业1”。
(2)源代码:参考本章资料文件夹下“作业2”。
Java语言程序设计(郑莉)第三章课后习题答案1.设N为自然数:n!=1*2*3*….*n称为n的阶乘,并且规定0!=1.试编程计算2!,4!,6!he 10!.并将结果输出到屏幕上。
答:public class Mul{public static void main(String args[]){int i,n;float s;for(n=0;n<=10;n=n+2){if(n==0)System.out.println("0!=1\n");else{s=1;for(i=1;i<=n;i++)s=s*i;System.out.println(n+"!="+s+"\n");}}}}2.编写程序,接收用户从键键盘上输入的三个整数x,y,z..从中选出最大和最小者,并编程实现。
答:public class Math{public static void main(String args[]){int[] IntArg = new int[args.length];for(int i=0;i<args.length;i++){IntArg[i] = Integer.parseInt(args[i]);}int max,min;max=IntArg[0]>IntArg[1]?IntArg[0]:IntArg[1];max=max>IntArg[2]?max:IntArg[2];min=IntArg[0]<IntArg[1]?IntArg[0]:IntArg[1];min=min<IntArg[2]?min:IntArg[2];System.out.println("max="+max);System.out.println("min="+min);}}3.求出100一枚的宿舍,并将这些数在屏幕上5个乙杭地显示出来。
一、判断题1、一个Java源程序可有多个类,但只仅有一个public类,而且程序名与public类名相同。
对2、如果类A和类B在同一个包中,则除了私有成员外,类A可以访问类B中所有的成员。
对3、接口中的成员变量全部为常量,方法为抽象方法。
对4、抽象类可以有构造方法,可以直接实例化。
错5、对static方法的调用可以不需要类实例。
对6、包含抽象方法的类一定是抽象类。
对7、方法中的形参可以和方法所属类的属性同名。
对8、接口无构造器,不能有实例,也不能定义常量。
错9、类的实例对象的生命周括实例对象的创建、使用、废弃、垃圾的回收。
对10、Java应用程序的入口main方法只有一种定义法。
对二、选择题1、下列答案正确的是(A)A) 在同一个Java源文件中可以包含多个类,只能有一个被声明为publicB) 在同一个Java源文件中只能包含一个类,并被声明为publicC) 在同一个Java源文件中可以包含多个类,都可以被声明为publicD) 在同一个Java源文件中可以包含多个类,只能有一个被声明为default2、Java实现动态多态性是通过( B )实现的。
A) 重载B) 覆盖C) 接口D) 抽象类3、下列哪一个是正确的方法重载描述(A)A) 重载方法的参数类型必须不同B) 重载方法的参数名称必须不同C) 返回值类型必须不同D) 修饰词必须不同4、final关键字不可以用来修饰( D )A) 类B) 成员方法C) 域D) 接口5、接口的所有成员方法都具有( B )属性A) private, final B) public, abstractC) static, protected D) static6、Java的封装性是通过(A)实现的A) 访问控制B) 设计内部类C) 静态域和静态方法D) 包7、下列接口或类不属于java.util.*包的是( D )A) Collection B) V ector C) Map D) Integer8、下述哪一组方法,是一个类中方法重载的正确写法?(A)A) int addV alue( int a, int b ){return a+b;}float addV alue ( float a, float b) {return a+b;}B) int addV alue (int a, int b ){value=a+b; }float addV alue ( int a, int b) {return (float)(a+b);}C) int addV alue( int a, int b ){return a+1;}int addV alue ( int a, int b) {return a+b;}D) int addV alue( int a, int b ) {return a+b;}int addV alue ( int x, int y ) {return x+y;}9、下列说法哪个是正确的?( C )A) 子类不能定义和父类同名同参数的方法B) 子类只能继承父类的方法,而不能重载C) 重载就是一个类中有多个同名但有不同形参和方法体的方法D) 子类只能覆盖父类的方法,而不能重载10、对于下列代码:public class Parent {public int addV alue( int a, int b) {int s;s = a+b;return s;}}class Child extends Parent {}下述哪个方法不可以加入类Child? ( B )A) public int addV alue( int a, int b,int c ){// do something...}B) public void addV alue (int a, int b ){// do something...}C) public int addV alue( int a ){// do something...}D) public int addV alue( int a, int b ) {//do something...}11、以下程序段输出结果的是( B )public class A implements B {public static void main(String args[]) {int i;A c1 = new A();i= c1.k;System.out.println("i="+i);}}interface B {int k = 10;}A) i=0 B) i=10 C) 程序有编译错误D) i=true12、阅读下面的程序,输出结果是( B )public class TestDemo {int m=5;public void some(int x) {m=x;}public static void main(String args []) {new Demo().some(7);}}class Demo extends TestDemo {int m=8;public void some(int x) {super.some(x);System.out.println(m);}}A) 5 B) 8 C) 7 D) 编译错误13、下述哪个说法是不正确的?(A)A) 局部变量在使用之前无需初始化,因为有该变量类型的默认值B) 类成员变量由系统自动进行初始化,也无需初始化C) 参数的作用域就是所在的方法D) for语句中定义的变量,当for语句执行完时,该变量就消亡了14、下述那一个保留字不是类及类成员的访问控制符。
/***************************************************************** ***************************第2xx习题4角谷猜想:任何一个正整数n,如果它是偶数则除以2,如果是奇数则乘以3加上1,这样得到一个新的整数,如继续进行上述处理,则最后得到的数一定是1。
编写应用程序和小程序分别证明:所有的3至100的数都符合上述规则。
***************************************************************** ***************************///程序清单/*方法1:采用小程序*/import java.awt.*;import java.util.*;import java.applet.Applet;public class jiaogu extends Applet{public void paint(Graphics g){int x,n,i=10;for(x=3;x<=10;x++){n=x;while(n!=1)if(n%2==0)n=n/2;else n=n*3+1;g.drawString (x+"符合角谷猜想!",25,25+i);i=i+15;}}}/**方法2:采用应用程序*/class jiaogu{public static void main(String args[]){int x,n,i;for(x=3;x<=1000;x++){n=x;while(n!=1)if(n%2==0)n=n/2;else n=n*3+1;System.out.println(x+"符合角谷猜想!");}}}/************************************************************** ******************************第2xx习题5编写一个applet,要求输入2个整数,在状态条显示较大的数,紧跟着显示“is larger”。
习题解答第一章作业题1.public class Hello{public static void main (String args[ ]){System.out.pintln(“早上好,good Morning”);}}2.import java.applet.*;import java.awt.*;public class Boy extends Applet {public void paint(Graphics g) {g.setColor(Color.blue);g.drawString("你好,hello",12,30);}}第二章作业题1.public class ZuoYe2_1{public static void main (String args[ ]){char c='а';System.out.println("字母"+c+"在unicode表中的顺序位置:"+(int)c);System.out.println("字母表:");while(c<='я'){System.out.print(" "+c);c=(char)(c+1);}}}2.import java.util.*;public class ZuoYe2_2{public static void main (String args[ ]){Scanner reader=new Scanner(System.in);long chengji=1;int m=0;while(reader.hasNextInt()){int x=reader.nextInt();m=m+1;chengji=chengji*x;}System.out.println(m+"个数的乘积为"+chengji);}}第三章作业题1.import java.util.*;public class ZuoYe3_1{public static void main (String args[ ]){Scanner reader=new Scanner(System.in);double y=0,x=0;x=reader.nextDouble();if(x<0)y=-1+2*x;else if(x==0)y=-1;else if(x>0)y=-1+3*x;System.out.println(y);}}2.public class ZuoYe3_2{public static void main(String args[]){int sum=0,m=3,n=7,a=1;while(a<=1000){if(a%m==0&&a%n==0)sum=sum+a;a++;}System.out.println("sum="+sum);}}3.public class ZuoYe3_3{public static void main(String args[]){long sum=0,a=8,item=a,n=10,i=1;for(i=1;i<=n;i++){ sum=sum+item;item=item*10+a;}System.out.println(sum);}}4.public class ZuoYe3_4{public static void main(String args[]){double sum=0,a=1,b=1,fuhao=1,item=a/b;int i=1;while(i<=1000){sum=sum+fuhao*item;i++;fuhao=fuhao*(-1);b=b+2;item=a/b;}System.out.println("sum="+sum);}}5.public class ZuoYe3_5{public static void main(String args[]){double sum=0,a=1;int i=1;while(i<=20){if(i>=10)sum=sum+a;i++;a=a*i;}System.out.println("sum="+sum);}}8.第四章作业题1.class DengCha{int start,d;DengCha(){}DengCha(int start,int d){this.start=start;this.d=d;}void setStart(int s){start=s;}void setD(int d){this.d=d;}int getSum(int n){int sum=0,i=1;while(i<=n){sum=sum+start;start=start+d;i++;}return sum;}}public class ZuoYe4_1{public static void main (String args[ ]){DengCha shulie=new DengCha(2,3);System.out.println(shulie.getSum(100));shulie.setStart(10);shulie.setD(5);System.out.println(shulie.getSum(9)); }}2.class Letter{public void printLetter(){for(char c='a';c<='z';c++)System.out.print(" "+c);}}public class ZuoYe4_2{public static void main (String args[ ]){Letter p=new Letter();p.printLetter();}}3.class SquareEquation{double a,b;static double c;double root1,root2;boolean boo;public SquareEquation(double a,double b,double c){this.a=a;this.b=b;SquareEquation.c=c;if(a!=0){boo=true;}else{boo=false;}}public void getRoots(){if(boo){System.out.println("是一元2次方程");double disk=b*b-4*a*c;if(disk>=0){root1=(-b+Math.sqrt(disk))/(2*a);root2=(-b-Math.sqrt(disk))/(2*a);System.out.printf("方程的根:%f,%f\n",root1,root2);}else{System.out.printf("方程没有实根\n");}}else{System.out.println("不是一元2次方程");}}public void setCoefficient(double a,double b,double c){ this.a=a;this.b=b;SquareEquation.c=c;if(a!=0){boo=true;}else{boo=false;}}}public class ZuoYe4_3{public static void main(String args[ ]){SquareEquation equation1=new SquareEquation(4,5,1);SquareEquation equation2=new SquareEquation(3,5,-7);equation1.getRoots();equation2.getRoots();}}4.import java.util.Scanner;class A{int f(int m,int n){if(m*n<0){ System.out.println("有负数,程序退出");System.exit(0);}if(m<n){ int temp=m;m=n;n=temp;}int a=m,b=n;int r=m%n;while(r!=0){ m=n;n=r;r=m%n;}return n;}}class B{A a;B(){a=new A();}int g(int m,int n){int temp=a.f(m,n);return m*n/temp;}}public class ZuoYe4_4{public static void main (String args[ ]){Scanner reader=new Scanner(System.in);System.out.println("输入2个正整数,程序计算出它们的最大公约数和最小公倍数");System.out.print("输入第一个整数:");int m=reader.nextInt();System.out.print("输入第二个整数:");int n=reader.nextInt();A a=new A();B b=new B();System.out.println(m+"和"+n+"的最大公约数是"+a.f(m,n));System.out.println(m+"和"+n+"的最小公倍数是"+b.g(m,n));}}5.import java.applet.Applet;import java.awt.*;public class Example4_10 extends Applet{Button redbutton;public void init(){redbutton=new Button("我是一个红色的按钮");redbutton.setBackground(Color.red);redbutton.setForeground(Color.white);add(redbutton);}}第五章作业题1.import java.util.Scanner;class A{public int f(int m,int n){if(m<n){int temp=m;m=n;n=temp;}int r=m%n;while(r!=0){m=n;n=r;r=m%n;}return n;}}class B extends A{public int f(int m,int n){int division=super.f(m,n);return (m*n)/division;}}public class ZuoYe5_1{public static void main (String args[ ]){A a=new A();B b=new B();Scanner reader=new Scanner(System.in);System.out.println("输入2个整数,程序计算出它们的最大公约数和最小公倍数");System.out.print("输入第一个整数:");int m=reader.nextInt();System.out.print("输入第二个整数:");int n=reader.nextInt();if(m*n<0){ System.out.println("有负数,程序退出");System.exit(0);}System.out.printf("%d和%d的最大公约数是%d\n",m,n,a.f(m,n));System.out.printf("%d和%d的最小公倍数是%d\n",m,n,b.f(m,n));}}2.abstract class A{public abstract void f(int x);public abstract void g(int x,int y);public abstract double h(double x); }class A1 extends A{public void f(int x){System.out.println(x);}public void g(int x,int y){int z=x+y;System.out.println(z);}public double h(double x){return x*x;}}class A2 extends A{public void f(int x){System.out.println("Hello:"+x);}public void g(int x,int y){int z=x-y;System.out.println(z);}public double h(double x){return Math.sqrt(x);}}class A3 extends A{public void f(int x){System.out.println("你好:"+x);}public void g(int x,int y){double z=(double)x/y;System.out.println(z);}public double h(double x){return 1/x;}}public class ZuoYe5_2{public static void main(String args[ ]){A a=new A1();a.f(10);a.g(12,20);System.out.println(a.h(100));a=new A2();a.f(10);a.g(12,20);System.out.println(a.h(100));a=new A3();a.f(10);a.g(12,20);System.out.println(a.h(100));}}3.interface A{public abstract void f(int x);public abstract void g(int x,int y);public abstract double h(double x); }class A1 implements A{public void f(int x){System.out.println(x);}public void g(int x,int y){int z=x+y;System.out.println(z);}public double h(double x){return x*x;}}class A2 implements A{public void f(int x){System.out.println("Hello:"+x);}public void g(int x,int y){int z=x-y;System.out.println(z);}public double h(double x){return Math.sqrt(x);}}class A3 implements A{public void f(int x){System.out.println("你好:"+x);}public void g(int x,int y){double z=(double)x/y;System.out.println(z);}public double h(double x){return 1/x;}}public class ZuoYe5_3{public static void main(String args[ ]){A a=new A1();a.f(10);a.g(12,20);System.out.println(a.h(100));a=new A2();a.f(10);a.g(12,20);System.out.println(a.h(100));a=new A3();a.f(10);a.g(12,20);System.out.println(a.h(100));}}4.class Cubic{ double getCubic(int n){ return 0;}}abstract class Sqrt{ public abstract double getSqrt(int x); }class A{ void f(Cubic cubic){ double result=cubic.getCubic(3);System.out.println(result);}}public class ZuoYe5_4{ public static void main(String args[]){ A a=new A();a.f(new Cubic(){ double getCubic(int n){ return n*n*n;}});Sqrt ss=new Sqrt(){ public double getSqrt(int x){ return Math.sqrt(x);}};double m=ss.getSqrt(5);System.out.println(m);}}5.class IntegerException extends Exception{ String message;IntegerException(int m){ message="年龄"+m+"不合理";}public String toString(){ return message;}}class People{ private int age=1;public void setAge(int age) throws IntegerException{if(age>=160||age<=0)throw new IntegerException(age); //方法抛出异常,导致方法结束elsethis.age=age;}public int getAge(){ System.out.println("年龄"+age+"合理");return age;}}public class ZuoYe6_5{ public static void main(String args[]){ People wang=new People(),zhang=new People();try { wang.setAge(189);System.out.println(wang.getAge());}catch(IntegerException e){ System.out.println(e.toString());}try { zhang.setAge(28);System.out.println(zhang.getAge());}catch(IntegerException e){ System.out.println(e.toString());}}}第六章作业题1.import java.util.regex.*;import java.util.*;public class ZuoYe6_1{public static void main(String args[ ]){Scanner reader=new Scanner(System.in);String s1=reader.nextLine();Pattern p;Matcher m;p=pile("[24680]A[13579]{2}");m=p.matcher(s1);while(m.find()){String str=m.group();System.out.print("从"+m.start()+"到"+m.end()+"匹配模式子序列:");System.out.println(str);}}}2.import java.util.regex.*;import java.util.*;public class ZuoYe4_1{public static void main(String args[ ]){Scanner reader=new Scanner(System.in);String s1=reader.nextLine();Pattern p;Matcher m;p=pile("\\d+");m=p.matcher(s1);while(m.find()){String str=m.group();System.out.print(str);}}}第七章作业题1.import java.util.*;public class ZuoYe7_2{ public static void main(String args[]){int year,month;try{year=Integer.parseInt(args[0]);month=Integer.parseInt(args[1])+1;}catch(NumberFormatException e){year=2004;month=1;}System.out.println(" 日一二三四五六");Calendar 日历=Calendar.getInstance();日历.set(year,month,1);int 星期几=日历.get(Calendar.DAY_OF_WEEK)-1;String a[]=new String[星期几+31];for(int i=0;i<星期几;i++){ a[i]="**";}for(int i=星期几,n=1;i<星期几+31;i++){ if(n<=9)a[i]=String.valueOf(n)+" ";elsea[i]=String.valueOf(n) ;n++;}for(int i=0;i<a.length;i++){ if(i%7==0){ System.out.println("");}System.out.print(" "+a[i]);}}}2.class ZuoYe7_2{ public static void main(String args[]){int year1,month1,day1,year2,month2,day2;try{year1=Integer.parseInt(args[0]);month1=Integer.parseInt(args[1]);day1=Integer.parseInt(args[2]);year2=Integer.parseInt(args[3]);month2=Integer.parseInt(args[4]);day2=Integer.parseInt(args[5]);}catch(NumberFormatException e){year1=2009;month1=0;day1=1;year2=2008;month2=0;day2=1;}Calendar calendar=Calendar.getInstance();calendar.set(year1,month1,day1);long timeYear1=calendar.getTimeInMillis();calendar.set(year2,month2,day2);long timeYear2=calendar.getTimeInMillis();long 相隔天数=Math.abs((timeYear1-timeYear2)/(1000*60*60*24));System.out.println(""+year1+"年"+month1+"月"+day1+"日和"+year2+"年"+month2+"月"+day2+"日相隔"+相隔天数+"天");}}3.import java.math.*;public class ZuoYe4_1{public static void main(String args[]){BigInteger chengji=new BigInteger("1"),ONE=new BigInteger("1"),i=ONE,m=new BigInteger("10");while(pareTo(m)<=0){chengji=chengji.multiply(i);i=i.add(ONE);}System.out.println(chengji);}}4.import java.util.*;public class ZuoYe7_4{public static void main(String args[]){HashSet<Integer> A=new HashSet<Integer>(),B=new HashSet<Integer>(),tempSet=new HashSet<Integer>();A.add(new Integer(1));A.add(new Integer(2));A.add(new Integer(3));A.add(new Integer(4));B.add(new Integer(1));B.add(new Integer(3));B.add(new Integer(7));B.add(new Integer(9));B.add(new Integer(11));tempSet=(HashSet<Integer>)A.clone();tempSet.retainAll(B);System.out.println("交:");Iterator<Integer> iter=tempSet.iterator();while(iter.hasNext()){Integer te=iter.next();System.out.printf("%d,",te.intValue());}tempSet=(HashSet<Integer>)A.clone();tempSet.addAll(B);iter=tempSet.iterator();System.out.println("并:");while(iter.hasNext()){Integer te=iter.next();System.out.printf("%d,",te.intValue());}tempSet=(HashSet<Integer>)A.clone();tempSet.removeAll(B);System.out.println("差:");iter=tempSet.iterator();while(iter.hasNext()){Integer te=iter.next();System.out.printf("%d,",te.intValue());}}}5.import java.util.*;class MyKey implements Comparable{double number=0;MyKey(double number){this.number=number;}public int compareTo(Object b){MyKey st=(MyKey)b;if((this.number-st.number)==0){return -1;}else{return (int)((this.number-st.number)*1000);}}}class 硬盘{int size;double price;硬盘(int n, double p){size=n;price=p;}}public class ZuoYe4_1{public static void main(String args[ ]){int [] size={10,3,7,12,10,22,100,4,6,2};double [] price={1.2,9.56,2.4,9.3,16.77,12.66,7.4,5.5,5.6,8.9,1.9};硬盘[] s=new 硬盘[10];for(int i=0;i<s.length;i++)s[i]=new 硬盘(size[i],price[i]);TreeMap<MyKey,硬盘> treemap=new TreeMap<MyKey,硬盘>();for(int i=0;i<s.length;i++)treemap.put(new MyKey(s[i].size),s[i]);int number=treemap.size();System.out.println("树映射中有"+number+"个对象:");Collection<硬盘> collection=treemap.values();Iterator<硬盘> iter=collection.iterator();while(iter.hasNext()){硬盘te=iter.next();System.out.println(te.size+","+te.price);}treemap.clear();for(int i=0;i<s.length;i++)treemap.put(new MyKey(s[i].price),s[i]);number=treemap.size();System.out.println("树映射中有"+number+"个对象:");collection=treemap.values();iter=collection.iterator();while(iter.hasNext()){硬盘te=iter.next();System.out.println(te.size+","+te.price);}}}第八章作业题1.属于操作题目,省略2.参见例子8-23.参见例子8-34. 参见例子8-10第九章作业题1.import java.io.*;import java.awt.*;import java.awt.event.*;public class ZuoYe9_1{ public static void main(String args[]){ int b;byte tom[]=new byte[25];try{ File f=new File("Example.java");FileInputStream in=new FileInputStream(f);while((b=in.read(tom,0,25))!=-1){ String s=new String (tom,0,b);System.out.print(s);}in.close();}catch(IOException e){ System.out.println("File read Error"+e);}}}2.import java.io.*;import java.util.*;public class ZuoYe9_2{public static void main(String args[]){Scanner reader=new Scanner(System.in);int b;try{FileOutputStream writefile=new FileOutputStream("line.txt");int line=1,n=10;System.out.println("输入"+n+"行文本,并存入磁盘:");while(line<=n){String s=reader.nextLine();byte buffer[]=s.getBytes();writefile.write(buffer,0,buffer.length);line++;}writefile.close();}catch(IOException e){System.out.println("Error "+e);}}}3.import java.io.*;public class ZuoYe9_3{public static void main(String args[ ]){int n=-1;CharArrayWriter out=new CharArrayWriter();for(char c='а';c<='я';c++){out.write(c);}CharArrayReader in=new CharArrayReader(out.toCharArray());try{ while((n=in.read())!=-1){if(n%2==0){System.out.printf("\n");}System.out.printf("\t位置%d,字符\'%c\'",n,(char)n);}}catch(IOException e){}}}4.import java.io.*;import java.util.*;public class ZuoYe9_4{public static void main(String args[]){try{FileOutputStream fos=new FileOutputStream("jerry.dat");DataOutputStream out_data=new DataOutputStream(fos);Scanner reader=new Scanner(System.in);for(int i=1;i<=10;i++){int x=reader.nextInt();out_data.writeInt(x);}out_data.close();}catch(IOException e){}try{FileInputStream fis=new FileInputStream("jerry.dat");DataInputStream in_data=new DataInputStream(fis);for(int i=1;i<=10;i++){int m=in_data.readInt();System.out.print(" "+m);}in_data.close();}catch(IOException e){}}}5.import java.io.*;import java.util.*;class Student implements Serializable{String name ;int number;Student(String name,int number){=name;this.number=number;}}public class ZuoYe9_5{public static void main(String args[]){List<Student> list=new LinkedList<Student>();List<Student> cloneList=null;for(int k=1;k<=12;k++)list.add(new Student("I am "+k,k));try{ FileOutputStream fileOut=new FileOutputStream("a.txt");ObjectOutputStream objectOut=new ObjectOutputStream(fileOut);objectOut.writeObject(list);FileInputStream fileIn=new FileInputStream("a.txt");ObjectInputStream objectIn=new ObjectInputStream(fileIn);cloneList=(List)objectIn.readObject();}catch(Exception event){System.out.println(event);}Iterator iter=cloneList.iterator();while(iter.hasNext()){Student te=(Student)iter.next();System.out.println(te.number+","+);}}}import java.io.*;public class ZuoYe9_6{ public static void main(String args[]){File f=new File("Xiti12_6.java");try{ RandomAccessFile random=new RandomAccessFile(f,"rw");random.seek(0);long m=random.length();while(m>=0){ m=m-1;random.seek(m);int c=random.readByte();if(c<=255&&c>=0){ System.out.print((char)c);}else{ m=m-1; //一个汉字占2个字节random.seek(m);byte cc[]=new byte[2];random.readFully(cc);System.out.print(new String(cc));}}random.close();}catch(IOException ee){}}}5.import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Xiti8_5{ public static void main(String args[]){ ComputerFrame fr=new ComputerFrame();fr.setTitle("计算");}class ComputerFrame extends JFrame implements ActionListener { JTextField text1,text2,text3;JButton button1,button2,button3,button4;JLabel label;public ComputerFrame(){setLayout(new FlowLayout());text1=new JTextField(10);text2=new JTextField(10);text3=new JTextField(10);label=new JLabel(" ",JLabel.CENTER);label.setBackground(Color.green);add(text1);add(label);add(text2);add(text3);button1=new JButton("加");button2=new JButton("减");button3=new JButton("乘");button4=new JButton("除");add(button1);add(button2);add(button3);add(button4);button1.addActionListener(this);button2.addActionListener(this);button3.addActionListener(this);button4.addActionListener(this);setSize(400,320);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);validate();}public void actionPerformed(ActionEvent e){ double n;if(e.getSource()==button1){ double n1,n2;try{ n1=Double.parseDouble(text1.getText());n2=Double.parseDouble(text2.getText());n=n1+n2;text3.setText(String.valueOf(n));label.setText("+");}catch(NumberFormatException ee){ text3.setText("请输入数字字符");}}else if(e.getSource()==button2){ double n1,n2;try{ n1=Double.parseDouble(text1.getText());n2=Double.parseDouble(text2.getText());n=n1-n2;text3.setText(String.valueOf(n));label.setText("-");}catch(NumberFormatException ee){ text3.setText("请输入数字字符");}}else if(e.getSource()==button3){double n1,n2;try{ n1=Double.parseDouble(text1.getText());n2=Double.parseDouble(text2.getText());n=n1*n2;text3.setText(String.valueOf(n));label.setText("*");}catch(NumberFormatException ee){ text3.setText("请输入数字字符");}}else if(e.getSource()==button4){double n1,n2;try{ n1=Double.parseDouble(text1.getText());n2=Double.parseDouble(text2.getText());n=n1/n2;text3.setText(String.valueOf(n));label.setText("/");}catch(NumberFormatException ee){ text3.setText("请输入数字字符");}}validate();}}6.import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Xiti8_6{ public static void main(String args[]){ new WindowPanel();}}class Mypanel extends JPanel implements ActionListener { JButton button;JTextField text;Mypanel(){ button=new JButton(" ");text=new JTextField(12);add(button);add(text);button.addActionListener(this);}public void actionPerformed(ActionEvent e){ String name=text.getText();if(name.length()>0)button.setText(name);validate();}}class WindowPanel extends JFrame{ Mypanel panel1,panel2;WindowPanel(){ panel1=new Mypanel();panel2=new Mypanel();panel1.setBackground(Color.red);panel2.setBackground(Color.blue);add(panel1,BorderLayout.SOUTH);add(panel2,BorderLayout.NORTH);setSize(300,320);setVisible(true);validate();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}7.import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Xiti8_7{ public static void main(String args[]){ new WindowColor();}}class WindowColor extends JFrame{ JButton button;JTextField text;JComboBox list;WindowColor(){ setLayout(new FlowLayout());button=new JButton("hello");button.setBackground(Color.pink);button.setForeground(new Color(12,26,200));text=new JTextField("how are you");text.setBackground(Color.yellow);text.setForeground(new Color(200,26,20));list=new JComboBox();list.addItem("Hello");list.addItem("Java");list.setBackground(Color.cyan);list.setForeground(new Color(100,100,100));add(list);add(button);add(text);setSize(300,320);setVisible(true);validate();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}8.import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Xiti8_8{ public static void main(String args[]){ MoveFrame f=new MoveFrame();f.setBounds(12,12,300,300);f.setVisible(true);f.setTitle("移动");f.validate();f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}class MoveFrame extends JFrame implements ActionListener{ JButton controlButton,movedButton;public MoveFrame(){ controlButton=new JButton("单击我运动另一个按钮");controlButton.addActionListener(this);movedButton=new JButton();movedButton.setBackground(new Color(12,200,34));setLayout(null);add(controlButton);add(movedButton);controlButton.setBounds(10,30,180,30);movedButton.setBounds(100,100,20,20);}public void actionPerformed(ActionEvent e){ int x=movedButton.getBounds().x;int y=movedButton.getBounds().y;x=x+5;y=y+1;movedButton.setLocation(x,y);if(x>200){ x=100;y=100;}}}9.import java.awt.*;import java.awt.event.*;import javax.swing.*;public class E{ public static void main(String args[]){ JFrame fr=new JFrame();fr.add(new LP(),BorderLayout.CENTER);fr.setVisible(true);fr.setBounds(12,12,300,300);fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);fr.validate();}}class LP extends JLayeredPane implements MouseListener,MouseMotionListener { JButton button[];JTextField text[];int x,y,a,b,x0,y0;LP(){ setLayout(new FlowLayout());button=new JButton[8];for(int k=0;k<button.length;k++){ button[k]=new JButton("用鼠标拖动我");add(button[k]);button[k].addMouseListener(this);button[k].addMouseMotionListener(this);}text=new JTextField[10];for(int k=0;k<text.length;k++){ text[k]=new JTextField("用鼠标拖动我");text[k].addMouseListener(this);add(text[k]);text[k].addMouseMotionListener(this);}addMouseMotionListener(this);}public void mousePressed(MouseEvent e){ Component com=null;com=(Component)e.getSource();setLayer(com,JLayeredPane.DRAG_LAYER);a=com.getBounds().x;b=com.getBounds().y;x0=e.getX(); //获取鼠标在事件源中的位置坐标y0=e.getY();}public void mouseReleased(MouseEvent e){ Component com=null;com=(Component)e.getSource();setLayer(com,JLayeredPane.DEFAULT_LAYER);Component component[]=this.getComponents();for(int k=0;k<component.length;k++){ Rectangle rect1=component[k].getBounds();Rectangle rect2=com.getBounds();if(rect1.intersects(rect2)&&com!=component[k]){ component[k].setVisible(false);//this.remove(component[k]);}}}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}public void mouseClicked(MouseEvent e){}public void mouseMoved(MouseEvent e){}public void mouseDragged(MouseEvent e){ Component com=null;if(e.getSource() instanceof Component){ com=(Component)e.getSource();a=com.getBounds().x;b=com.getBounds().y;x=e.getX(); //获取鼠标在事件源中的位置坐标y=e.getY();a=a+x;b=b+y;com.setLocation(a-x0,b-y0);}}}10.import java.awt.*;import java.awt.event.*;import javax.swing.*;public class E{ public static void main(String args[]){ JFrame fr=new JFrame();fr.add(new MoveButton(),BorderLayout.CENTER);fr.setVisible(true);fr.setBounds(12,12,300,300);fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);fr.validate();}}class MoveButton extends JLayeredPane implements KeyListener { JButton b[]=new JButton[8];int x,y;MoveButton(){ setLayout(new FlowLayout());for(int i=0;i<8;i++){ b[i]=new JButton(""+i);b[i].addKeyListener(this);add(b[i]);}}public void keyPressed(KeyEvent e){ int moveDistance=1;Component com=(Component)e.getSource();int x=(int)com.getBounds().x;。
习题三一、问答题1.面向对象语言有哪三个特性?答:封装性,继承性,多态性。
2.类体内容中声明成员变量是为了体现对象的属性还是行为?答:属性。
3.类体内容中定义的非构造方法是为了体现对象的属性还是行为?答:行为。
4.什么时候使用构造方法?构造方法有类型吗?答:用类创建对象时使用构造方法。
没有类型。
5.类中的实例变量在什么时候会被分配内存空间?答:用类创建对象时会被分配内存空间。
6.什么叫方法的重载?构造方法可以重载吗?答:一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即是参数的个数不同,或者是参数的类型不同。
可以。
7.类中的实例方法可以操作类变量(static变量)吗?类方法(static方法)可以操作实例变量吗?答:可以。
不可以。
8.类中的实例方法可以用类名直接调用吗?答:不可以。
9.简述类变量和实例变量的区别。
答:一个类通过使用new运算符可以创建多个不同的对象,不同的对象的实例变量将被分配不同的内存空间。
所有对象的类变量都分配给相同的一处内存,对象共享类变量。
二、选择题1.下列哪个叙述是正确的?BA.Java应用程序由若干个类所构成,这些类必须在一个源文件中。
B.Java应用程序由若干个类所构成,这些类可以在一个源文件中,也可以分布在若干个源文件中,其中必须有一个源文件含有主类。
C.Java源文件必须含有主类。
D.Java源文件如果含有主类,主类必须是public类。
2.下列哪个叙述是正确的?DA.成员变量的名字不可以和局部变量的相同。
B.方法的参数的名字可以和方法中声明的局部变量的名字相同。
C.成员变量没有默认值。
D.局部变量没有默认值。
3.对于下列Hello类,哪个叙述是正确的?DA.Hello类有2个构造方法。
B.Hello类的int Hello()方法是错误的方法。
C.Hello类没有构造方法。
D.Hello无法通过编译,因为其中的hello方法的方法头是错误的(没有类型)。
class Hello {Hello(int m){}int Hello() {return 20;}hello() {}}4.对于下列Dog类,哪个叙述是错误的?DA.Dog(int m)与Dog(double m)互为重载的构造方法。
B.int Dog(int m)与void Dog(double m)互为重载的非构造方法。
C.Dog类只有两个构造方法,而且没有无参数的构造方法。
D.Dog类有3个构造方法。
class Dog {Dog(int m){}Dog(double m){}int Dog(int m){return 23;}void Dog(double m){}}5.下列哪些类声明是错误的?CDA)class AB)public class AC)protected class AD)private class A6.下列A类中【代码1】~【代码5】哪些是错误的?代码1,代码4 class Tom {private int x = 120;protected int y = 20;int z = 11;private void f() {x = 200;System.out.println(x);}void g() {x = 200;System.out.println(x);}}public class A {public static void main(String args[]) {Tom tom = new Tom();tom.x = 22; //【代码1】tom.y = 33; //【代码2】tom.z = 55; //【代码3】tom.f(); //【代码4】tom.g(); //【代码5】}}7.下列E类的类体中哪些【代码】是错误的。
代码4 class E {int x; //【代码1】long y = x; //【代码2】public void f(int n) {int m; //【代码3】int t = n+m; //【代码4】}}三、阅读程序1.说出下列E类中【代码1】~【代码3】的输出结果。
class Fish {int weight = 1;}class Lake {Fish fish;void setFish(Fish s){fish = s;}void foodFish(int m) {fish.weight=fish.weight+m;}}public class E {public static void main(String args[]) {Fish redFish = new Fish();System.out.println(redFish.weight); //【代码1】输出1Lake lake = new Lake();lake.setFish(redFish);lake.foodFish(120);System.out.println(redFish.weight); //【代码2】输出121System.out.println(lake.fish.weight); //【代码3】输出121 }}2.请说出A类中System.out.println的输出结果。
class B {int x = 100,y = 200;public void setX(int x) {x = x;}public void setY(int y) {this.y = y;}public int getXYSum() {return x+y;}}public class A {public static void main(String args[]) {B b = new B();b.setX(-100);b.setY(-200);System.out.println("sum="+b.getXYSum()); 输出sum=-100 }}3.请说出A类中System.out.println的输出结果。
class B {int n;static int sum=0;void setN(int n) {this.n=n;}int getSum() {for(int i=1;i<=n;i++)sum=sum+i;return sum;}}public class A {public static void main(String args[]) {B b1=new B(),b2=new B();b1.setN(3);b2.setN(5);int s1=b1.getSum();int s2=b2.getSum();System.out.println(s1+s2); 输出27}}4.请说出E类中【代码1】,【代码2】的输出结果n的输出结果。
class A {double f(int x,double y) {return x+y;}int f(int x,int y) {return x*y;}}public class E {public static void main(String args[]) {A a=new A();System.out.println(a.f(10,10)); //【代码1】 输出100System.out.println(a.f(10,10.0)); //【代码2】 输出20.0}}四、编程题用类描述计算机中CPU 的速度和硬盘的容量。
要求Java 应用程序有4个类,名字分别是PC ,CPU 和HardDisk 和Test ,其中Test 是主类。
PC 类与CPU 和HardDisk 类关联的UML 图如下图所示。
其中,CPU 类要求getSpeed()返回speed 的值;要求setSpeed(int m)方法将参数m 的值赋值给speed 。
HardDisk 类要求getAmount()返回amount 的值,要求setAmount(int m)方法将参数m 的值赋值给amount 。
PC 类要求setCUP(CPU c) 将参数c 的值赋值给cpu ,要求setHardDisk (HardDisk h)方法将参数h 的值赋值给HD ,要求show()方法能显示cpu 的速度和硬盘的容量。
主类Test 的要求:① main 方法中创建一个CPU 对象cpu ,cpu 将自己的speed 设置为2200,② main 方法中创建一个HardDisk 对象disk ,disk 将自己的amount 设置为200, ③ main 方法中创建一个PC 对象pc ,④ pc 调用setCUP(CPU c)方法,调用时实参是cpu ,⑤ pc 调用setHardDisk (HardDisk h)方法,调用时实参是disk , ⑥ pc 调用show()方法。
源程序:public class CPU{int speed;int getSpeed(){return speed;}public void setSpeed(int m){this.speed = m;}PC 与CPU 和HardDisk 关联UML 图 PCcpu:CPUHD:HardDisksetCPU(CPU):voidsetHardDisk(HardDisk):voidshow():voidCPUspeed:int setSpeed(int):void getSpeed():int HardDisk amount:intsetAmount(int):voidgetAmount():int}public class HardDisk{int amount;int getAmount(){return amount;}public void setAmount(int amount){this.amount = amount;}}public class PC{CPU cpu;HardDisk disk;void setCPU(CPU c){this.cpu = c;}void setHardDisk(HardDisk h){this.disk = h;}void show(){System.out.println("CPU速度:"+cpu.getSpeed());System.out.println("硬盘容量:"+disk.getAmount());}}public class Test{public static void main(String args[]){CPU cpu = new CPU();HardDisk disk = new HardDisk();cpu.setSpeed(2200);disk.setAmount(200);PC pc = new PC();pc.setCPU(cpu);pc.setHardDisk(disk);pc.show();}}运行结果:。