Java语言程序设计(一)课后习题答案_第1页
Java语言程序设计(一)课后习题答案_第2页
Java语言程序设计(一)课后习题答案_第3页
Java语言程序设计(一)课后习题答案_第4页
Java语言程序设计(一)课后习题答案_第5页
已阅读5页,还剩63页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章Java语言基础指出Java语言的主要特点和ava程序的执行过程。答:强类型。编译和解释。自动无用内存回收功能。面向对象。与平台无关。安全性。分布式计算。多线程。2.说出开发与运行Java程序的主要步骤。答:安装SUN的JDK,配置classpath编写源文件。编译。运行。3.如何区分应用程序和小应用程序。答:应用程序必须在一类中定义一个main()方法,该方法代表应用程序的入口。小应用程序不必定义main()方法,但是必须继承applet类。4.说出Java源文件的命名规则。答:和类命名规则一样,首字母大写。5.选择一种上机环境,参照实例,编写一个输出“helloworld!”字样的Java程序。答:选择SUN的IDE,用UltraEdit-32编写如下://HelloWorld.java/***<p>这是第一个程序</p>*@author饶林*@see*/classHelloWorld{publicstaticvoidmain(String[]args){System.out.println("HelloWorld!");}}6.Java用什么字符集?共有多少个不同的字符?答:Java语言使用Unicode字符集,共有65535个字符。7.Java语言标识符的命名规则是什么?答:由字母(包括英文字母、下划线、美元字符、文字字符)和数字字符组成。限定标识符的第一个字符不能是数字。8.Java有哪些基本的数据类型,它们的常量又是如何书写的?答:基本的数据类型也称为原始数据类型,是系统预先规定的一些常用类型。它们是:整数类型、浮点数(实数)类型、字符(文字)类型、逻辑类型(布尔型)。9.指出下列内容那些事Java语言的整形常量,哪些是浮点数类型常量,那些两者都不是?1)E-42)A4233)-1E-314)0xABCL5).32E316)0877)0xL8)0039)0x12.510)07711)11E12)056L13)0.14).0答:整形常量:4,5,6,8,10,12浮点型:1,3,9,13,14两者都不是:2,7,11第二章运算和语句1.Java字符能参加算术运算吗?答:能,例如char类型a自加后变b2.占字节多的变量能直接赋给占字节少的变量吗?答:不能,需强制类型转换。3.试用Java语言表达式描述以下数学计算式或逻辑条件:1)V=(4/3)*math.PI*math.pow(r,3);2)R=1/(1/R1+1/R2)原式3)y=x5+x3+6y=pow(x,5)+pow(x,3)+6;4)F=M1M2/R2F=M1*M2/R*R5)Math.sin(x)/ax+Math.cos(π*x/2)>0?Math.cos(π*x/2):-Math.cos(π*x/2);6)0<a<10a>0&&a<107)条件x=1与y=2有且只有一个成立(x==1&&y!=2)||(x!=1&&y==2)4.设再求以下表达式之前,整形变量a的值是4,试指出在求表达式之后变量a,b和c的值。1)b=a*a++;b=16,a=5;2)c=++a+a;c=10,a=5;5.编写一个程序示意前缀++和后缀++的区别,前缀—和后缀—的区别。答:领悟第四题完全就可以理解前缀++后缀++--亦如此。6.若一个数恰好等于它的因子之和,则这个数称为“完全数”。编写程序求1000之内的所有完全数。解析:什么是数的因子?因子就是所有可以整除这个数的数,但是不包括这个数自身.//HelloWorld.java/***<p>这是第二个程序</p>*@author饶林*@see*/publicclassPraxis2_6{publicstaticvoidmain(String[]args){inti,j,sum;for(i=1;i<=1000;i++){//sum归0必须在此处sum=0;for(j=1;j<=i/2;j++){if((i%j)==0)sum=sum+j;}if(i==sum)System.out.print(i+"");}}}7.编写输入正实数x,求平方不超过x的最大正整数n,并输出。解析:/***<p>这是第三个程序</p>*@author饶林*@see*/importjava.util.*;publicclassPraxis2_7{publicstaticvoidmain(String[]args){ScannerconsoleScanner=newScanner(System.in);System.out.print("请输入正实数X:");intx=consoleScanner.nextInt();inty=(int)(Math.sqrt(x));System.out.println("n="+y);}}8.输入正整数n输出n行n列星号字符组成三角图案。/***<p>这是第四个程序</p>*@author饶林*@see*/importjava.util.*;publicclassPraxis2_8{publicstaticvoidmain(String[]args){ScannerconsoleScanner=newScanner(System.in);System.out.print("请输入正整数x:");intx=consoleScanner.nextInt();for(inty=0;y<x;y++){for(intm=x-y-1;m>0;m--){System.out.print("");}for(intn=0;n<y+1;n++){System.out.print("*");}System.out.println();}}}9.设有整形变量x和y的值分别为5和110.指出执行了下列语句后,变量x和y后的值分别是多少?1)while(x<=y)x*=2;X=160,y=110;2)do{x=y/x;y=y-x;}while(y>=1);X=18,y=0;10.水仙花数是一个n(>=3)位的数,它等于每个数字的n次幂之和。例如,153是一个水仙花数,153=13+53+33,是编写一个程序,求小于999的所有水仙花数。/***<p>这是第五个程序</p>*@author饶林*@see*/publicclassPraxis2_10{publicstaticvoidmain(String[]args){intx,y,z;for(intm=100;m<999;m++){x=m/100;y=(m%100)/10;z=(m%100)%10;if(m==x*x*x+y*y*y+z*z*z)System.out.print(m+"");}}}11.编程序解百鸡问题:鸡翁一,值钱五,鸡母一,值钱三,鸡邹三,值钱一,百钱买百鸡,求鸡翁,鸡母,鸡邹各几何?/***<p>这是第六个程序</p>*@author饶林*@see*/publicclassPraxis2_11{publicstaticvoidmain(Stringargs[]){for(inti=0;i<=100;i++)for(intj=0;j<=100;j++)for(intk=0;k<=100;k+=3)//鸡雏的个数必须使3的倍数{if(((5*i+3*j+k/3)==100)&&(i+j+k==100))System.out.println("鸡翁:"+i+";鸡母:"+j+";鸡雏:"+k);}}}12.编写程序,按下面的公式计算自然对数底e的值:e=1+1/1!+1/2!+1/3!....../***<p>这是第七个程序</p>*@author饶林*@see*/publicclassPraxis2_12{publicstaticvoidmain(Stringargs[]){intn=1000;//计算精度doublee=1.0;for(inti=1;i<=n;i++){e=e+1.0/Praxis2_12.factorial(i);}System.out.println("e="+e);}staticdoublefactorial(inta)//计算阶乘的静态方法{doublef=1.0;for(intj=1;j<=a;j++)f=f*j;returnf;}}13.编写程序,用如下公式计算圆周率的近似值:14.回文整数是正读反读相同的整数,编写一个程序,输入一个整数,判断是否为回文整数。/***<p>这是第八个程序</p>*@author饶林*@see*/importjava.util.*;publicclassPraxis2_14//输入整数,判断是否是回文整数{publicstaticvoidmain(Stringargs[]){inta[]=newint[100];inti=0;booleanb=true;ScannerconsoleScanner=newScanner(System.in);System.out.print("请输入一个int型整数:");intx=consoleScanner.nextInt();inttest=x;while(test>0)//把整数的各个位上的数存到数组里{a[i]=test%10;test=test/10;i++;}for(intj=0;j<i;j++){if(a[j]!=a[i-j-1]){b=false;break;}}if(b)System.out.println(x+"是回文整数");elseSystem.out.println(x+"并不是回文整数");}}15.草地上有一堆野果,有一只猴子每天要吃掉一半又一个,五天后刚好吃完,问有多少个,猴子每天吃多少个?/***<p>这是第九个程序</p>*@author饶林*@see*/publicclassPraxis2_15{publicstaticvoidmain(String[]args){intday,x1,x2;day=5;x2=0;while(day>0){x1=(x2+1)*2;x2=x1;day--;}System.out.println("共有"+x2+"个桃子。");System.out.println("----------------------------");for(inti=1;i<6;i++){inteast;east=x2/2+1;x2=x2/2-1;System.out.println("第"+i+"天吃"+east+"个。");}System.out.println("----------------------------");}}第三章面向对象编程基础1.什么是面向对象技术?它有什么优点?答:程序设计者考虑的是对象的描述,对象间的关系,类的管理、什么时候什么地方调用对象的那一种方法。最大的优点是面向对象编程能有效地支持重用,是超大规模的程序也变得相对容易维护。2.面向对象的程序设计与面向过程的程序设计有什么区别?答:面向过程的语言编程编程模式是:程序=数据结构+算法编程时需要考虑的是程序做什么,怎么做,重点考虑每个实现的细节。面向对象的编程模式:程序=对象+消息程序设计者考虑的是对象的描述、对象间的关系、类的管理、什么时候和什么地方调用对象的那一种方法。3.在程序中对象有什么区别?答:类是对同一种对象的描述,类概括了同类对象的共有性质:数据和方法。类的每个对象都有自己的标识,但它们具有相同的一组属性和提供相同的一组方法。4.举例说明类方法和实例方法,以及类变量和实例变量的区别。什么情况下用实例变量?什么情况下用类变量?答:一般静态的数据和方法使用类变量。5.子类能继承超类的那些成员变量和方法?超类Private子类No(默认)ProtectPublicYesYesYes6.子类在什么情况下能隐藏超类的成员变量和方法?答:重写7.在子类中是否允许有一个方法和超类的方法名字相同,而类型不同?答:不应许,子类中定义一个方法,并且这个方法的名字、返回类型、参数个数、和类型与从父类继承的方法完全相同。例如:classR{intadd(){inta=2;returna++;}}publicclassRRextendsR{floatadd(){floata=2.0;returna;}publicstaticvoidmain(String[]args){System.out.println(add());}}8.试说出对象、类、继承和多态性的概念。9.略10.接口与抽象类的区别。答:抽象类:whatcanIdo?接口:Icandoit.例子:就像铁门木门都是门(抽象类),你想要个门我给不了(不能实例化),但我可以给你个具体的铁门或木门(多态);而且只能是门,你不能说它是窗(单继承);一个门可以有锁(接口)也可以有门铃(多实现)。门(抽象类)定义了你是什么,接口(锁)规定了你能做什么(一个接口最好只能做一件事,你不能要求锁也能发出声音吧(接口污染))。11.指出Applet的程序结构及各方法的作用。答:JavaAPI的Applet类为您提供设计applet程序外观并管理其动作时所需要的支持。该类提供一种叫做Panel(面板)的图形用户界面(GUI)组件以及大量方法。要创建一个applet程序,就需要扩展该Applet类(或创建子类)并实现您所需要的外观和动作。12.以下程序的错误:Takecare.java:5:无法从静态上下文中引用非静态变量afloatc=a+b;^13.试声明一个复数类Complex。解析://样例大家扩展classComplex{doublea,b;Complex(){}Complex(doublea,doubleb){this.a=a;this.b=b;}publicStringPrint(){Stringresult=newString(this.a+(b>0?"+":"")+(b!=0?this.b+"i":""));returnresult;}publicComplexadd(Complexval){Complexresult=newComplex();result.a=this.a+val.a;result.b=this.b+val.b;returnresult;}}publicclassTestComplex{publicstaticvoidmain(String[]args){Complexcomplex1=newComplex(1.0,2.0);Complexcomplex2=newComplex(2.0,3.0);System.out.println(complex1.add(complex2).Print());}}第四章数组和字符串1.举例说明如何声明、创建初始化数组。答:有三种方法。书P69,不一一举例了。2.略3.一个数组能存储不同类型的元素吗?答:不能。4.编写一个Java程序,形成以下形式的二维数组,并输出。解析:publicclassArry{publicstaticvoidmain(String[]args){int[][]a={{1,2,9,10,25},{4,3,8,11,24},{5,6,7,12,23},{16,15,14,13,22},{17,18,19,20,21}};for(inti=0;i<a.length;i++){for(intj=0;j<a[i].length;j++){if(a[i][j]<10){System.out.print(""+a[i][j]+"");}elseSystem.out.print(a[i][j]+"");}System.out.println();}}}5.Java中字符数组与字符串有什么区别?答:数组是一个容器。6.确定一个字符数组长度与确定一个Sting对象的长度有什么区别?答:确定字符数组的长度用属性length,而String对象用方法length()。7.String类的方法转换。解析:publicclassConvert{publicstaticvoidmain(String[]args){Stringa="StrIng";System.out.println(a.toUpperCase());System.out.println(newString(a.toLowerCase()));}}8.使用String类的concat方法:例:publicclassTestConcat{publicstaticvoidmain(String[]args){Stringa=newString("raoliv->");Stringb=newString("");System.out.println(a.concat(b));}}9.试利用java.util.Date类继承声明实现MyDate类。。。解析:10.略11.编写实现从两字符串找出最长的相同字符序列的代码。解析:得到字符串str1,str2后,有一个为空则子列为空。如果都不为空,开始下面的步骤。求得两列的长度分别为n1,n2。动态生n2行n1列矩阵(二维数组)。取str2中每个元素(记位置为i)与str1中元素(记位置为j)逐个比较,如果相等则为矩阵中相应行列坐标的元素赋值为1,否则为0(可用循环嵌套完成)。比如str1(abc0cbad)str2(cba1abc)两串的话,可以得到如图所示矩阵。然后,不难看出,要进行如下步骤。定义strax,用来记录最大子列中元素个数。定义数组l[n2],用来记录最大子列的首字符地址(因为可能有不同最大子列,故用数组,而不是单个变量)。判断矩阵中每一个元素,是否为1,如果是则记下此时行地址到l数组,然后判断相对于这个元素的下一行下一列的元素是否为1,如果是则继续判断,一直到为0。记下此次判断(即一个while循环)中“1”的个数n,存入变量strax。对于矩阵中的每一个元素都这么判断,如果判断中n的值大于strax那么把n付给strax,同时把这个子列的首地址付给l[0],l[0]后面的元素全赋值为-1。如果,某次判断得到的n与strax相同,即有相同最大子列,那么把它的首地址存入l数组的下一个位置。当这个矩阵的每一个元素都判断完毕后,会得到strax,和数组l,然后用循环做如下输出过程:依次以l数组中的每个元素为首地址,输出str2字符串中以相应序号开头的strax个字符,那么完成所有最大子列的输出。例子:输入:aabcbcbbcabcbac输出:abcbpublicclasstest1{publicstaticvoidmain(String[]args){intmax=0;intcurrent=0;Stringstr1=newString("aabcbcb");Stringstr2=newString("bcabcbac");intlen1=str1.length();intlen2=str2.length();intarr[][];arr=newint[len1][len2];//初始化数组for(inti=0;i<str1.length();i++)for(intj=0;j<str2.length();j++)arr[i][j]=0;for(intk=0;k<str1.length();k++){chara=str1.charAt(k);for(intl=0;l<str2.length();l++){charb=str2.charAt(l);if(a==b){arr[k][l]=1;}else{arr[k][l]=0;}}}for(inti=0;i<str1.length();i++)for(intj=0;j<str2.length();j++){if(arr[i][j]==1&&arr[i-1][j-1]==1)arr[i][j]=arr[i-1][j-1]+1;if(max<arr[i][j]){max=arr[i][j];current=i;}if(max==0){System.out.println("没有找到。");}else{System.out.println(str1.substring(current+1-max,max));}}}}12.整理字符串将前后空白删去。并把中间的多个空白保留一个。解析:用String类的split方法拆分再连接然后用trim方法去掉前后空格。publicclasstest2{publicstaticvoidmain(String[]args){Strings="helloraoliv->WelcometoSystem.out.println("原来为:"+s);s=s.trim();";s=s.replaceAll("\\s+","#");Stringss[]=s.split("#");System.out.print("替换后:");for(inti=0;i<ss.length;i++){System.out.print(ss[i]+"");}}}13.略第五章图形界面设计(一)1.Swing与AWT有何关系?答:Swing是AWT的提高和扩展,共存于Java基础类。AWT依赖于平台绘制用户界面组件,而Swing有自己的机制。2.什么是组件对象?什么是容器?容器和其它类型的组件有什么不同?答:略P863.略4.略5.略6.编一小应用程序,小应用程序窗口有一个按钮,当点击时点击的次数会显示在按钮上。解析:先用javac编译成class字节码,再在当前文件夹下建一个html页面源文件如下.。importjava.applet.*;importjavax.swing.*;importjava.awt.event.*;publicclassPraxis5_6extendsAppletimplementsActionListener{intnum=0;JButtonbutton1;publicvoidinit(){setSize(300,200);button1=newJButton(""+num);button1.addActionListener(this);add(button1);}publicvoidactionPerformed(ActionEvente){button1.setText(""+num++);}}/*html页面<html><body><appletcode="Praxis5_6.class"width="300"height="300"></applet></body></html>*/7.创建一个有文本框和三个按钮的程序当按下某个按钮时使不同的文字显示在文本框中。解析:importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;publicclassPraxis5_7{publicstaticvoidmain(String[]args){ButtonDemobuttondemo=newButtonDemo();}}classButtonDemoextendsJFrameimplementsActionListener{JTextFieldtext;JButtonbutton1,button2;ButtonDemo(){super("Praxis5_8");Containercon=this.getContentPane();setLayout(newFlowLayout());text=newJTextField(10);button1=newJButton("raoliv");button2=newJButton("欢迎来到");button1.addActionListener(this);button2.addActionListener(this);con.add(text);con.add(button1);con.add(button2);setSize(300,200);setVisible(true);}publicvoidactionPerformed(ActionEvente){if(e.getSource()==button1)text.setText(button1.getLabel());elseif(e.getSource()==button2)text.setText(button2.getLabel());}}8.编写一个有两个文本狂的小应用程序,在第一个文本框输入英文单词,第二个文本框自动显示汉语解释,或在第一个文本框输入单词,第二个文本框显示英语。解析:只增加了一个单词raoliv->饶林饶林->raoliv可以多写几个.。importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;publicclassPraxis5_8{publicstaticvoidmain(String[]args){MyWindowa=newMyWindow();a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}classMyWindowextendsJFrameimplementsActionListener{JTextFieldtext1,text2;JLabellabel;MyWindow(){super("Praxis5_8");setLayout(newFlowLayout());text1=newJTextField(10);text2=newJTextField(10);text2.setEditable(false);label=newJLabel("输入字符:");this.getContentPane().add(label);this.getContentPane().add(text1);this.getContentPane().add(text2);text1.addActionListener(this);setSize(400,100);setVisible(true);validate();}publicvoidactionPerformed(ActionEvente){Stringword=text1.getText();if(word.equals("raoliv"))text2.setText("饶林");elseif(word.equals("饶林"))text2.setText("raoliv");elsetext2.setText("没有找到");}}9.编写一个有标签、有文本框、文本区和两个按钮的小应用程序。,,,importjava.util.*;importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;publicclassPraxis5_9{publicstaticvoidmain(String[]args){MyWindowa=newMyWindow();a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}classMyWindowextendsJFrameimplementsActionListener{JLabellabel;JTextFieldtext;JButtonbutton1,button2;JTextAreatextArea;JPanelpan1,pan2;MyWindow(){super("Praxis5_9");setSize(300,300);setLayout(newFlowLayout());label=newJLabel();text=newJTextField(15);textArea=newJTextArea(10,10);button1=newJButton("SUM");button2=newJButton("AVG");pan1=newJPanel();pan2=newJPanel();JScrollPanejsp=newJScrollPane(textArea);jsp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);jsp.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);getContentPane().add(jsp);getContentPane().add(button1);getContentPane().add(button2);getContentPane().add(label);getContentPane().add(text);button1.addActionListener(this);button2.addActionListener(this);setVisible(true);validate();}publicvoidactionPerformed(ActionEvente){Strings=textArea.getText();StringTokenizert=newStringTokenizer(s,"'\n',;.");intn=t.countTokens();inta[]=newint[n];for(inti=0;i<n;i++){a[i]=Integer.parseInt(t.nextToken());}if(e.getSource()==button1){label.setText("输入数的和为:");intsum=0;for(inti=0;i<n;i++){sum=sum+a[i];}text.setText(""+sum);}elseif(e.getSource()==button2){label.setText("输入数平均值为:");intsum=0;for(inti=0;i<n;i++){sum=sum+a[i];}text.setText(""+sum/n);}}}10.布局如下:importjava.awt.*;importjavax.swing.*;publicclassPraxis5_10{publicstaticvoidmain(Stringargs[]){windowwin=newwindow();win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}classwindowextendsJFrame{JScrollPanejsp1,jsp5;JPanelpanel2,panel3,panel4,panel6;JTextAreajsp1_Text,jsp5_Text;JLabelpanel2_Label;JTextFieldpanel2_Field;JPanelpanel3_p1,panel3_p2,panel4_p1,panel4_p2,panel4_p3,panel6_p1,panel6_p2,panel6_p3;JButtonpanel4_b1,panel4_b2;window(){super("Praxis5_10");setSize(600,120);setLayout(newGridLayout(2,3));setVisible(true);jsp1_Text=newJTextArea("文本区(带滚动条)");JScrollPanejsp1=newJScrollPane(jsp1_Text);panel2=newJPanel();panel2_Label=newJLabel("标签");panel2_Field=newJTextField("文本框");panel3=newJPanel();panel3_p1=newJPanel();panel3_p2=newJPanel();panel4=newJPanel();panel4_b1=newJButton("按钮");panel4_b2=newJButton("按钮");panel4_p1=newJPanel();panel4_p2=newJPanel();panel4_p3=newJPanel();jsp5_Text=newJTextArea("文本区(带滚动条)");JScrollPanejsp5=newJScrollPane(jsp5_Text);panel6=newJPanel();panel6_p1=newJPanel();panel6_p2=newJPanel();panel6_p3=newJPanel();jsp1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);jsp1.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);jsp5.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);jsp5.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);panel2.setLayout(newGridLayout(2,1));panel2.add(panel2_Label);panel2.add(panel2_Field);panel3.setLayout(newGridLayout(1,2));panel3_p1.setBackground(Color.BLACK);panel3_p2.setBackground(Color.BLUE);panel3.add(panel3_p1);panel3.add(panel3_p2);panel4.setLayout(newGridLayout(1,3));panel4_p1.setLayout(newGridLayout(2,1));panel4_p1.add(panel4_b1);panel4_p1.add(panel4_b2);panel4_p2.setBackground(Color.BLUE);panel4_p3.setBackground(Color.BLACK);panel4.add(panel4_p1);panel4.add(panel4_p2);panel4.add(panel4_p3);panel6.setLayout(newGridLayout(1,3));panel6_p1.setBackground(Color.RED);panel6_p2.setBackground(Color.GREEN);panel6_p3.setBackground(Color.orange);panel6.add(panel6_p1);panel6.add(panel6_p2);panel6.add(panel6_p3);add(jsp1);add(panel2);add(panel3);add(panel4);add(jsp5);add(panel6);validate();}}第六章图形界面设计(二)1.设计一个面板,该面板中有四个运动项目选择框和一个文本区。当某个选择项目被选中时,在文本区中显示该选择项目。解析:选多个importjava.util.*;importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;classpanelextendsJPanel{JCheckBoxbox1,box2,box3,box4,box5;//ButtonGroupg;JTextAreatext;panel(){setLayout(newGridLayout(1,6));//g=newButtonGroup();box1=newJCheckBox("高丽华");box2=newJCheckBox("饶林");box3=newJCheckBox("谌凯");box4=newJCheckBox("韩伟虎");box5=newJCheckBox("梁继杰");text=newJTextArea(5,5);//g.add(box1);g.add(box2);g.add(box3);g.add(box4);g.add(box5);add(box1);add(box2);add(box3);add(box4);add(box5);add(text);}}classMyWindowextendsJFrameimplementsItemListener{panelpanel1;MyWindow(){super("Praxis6_1");Containercon=this.getContentPane();con.setLayout(newFlowLayout());setSize(400,100);panel1=newpanel();add(panel1);panel1.box1.addItemListener(this);panel1.box2.addItemListener(this);panel1.box3.addItemListener(this);panel1.box4.addItemListener(this);panel1.box5.addItemListener(this);setVisible(true);pack();}publicvoiditemStateChanged(ItemEvente){if(e.getItemSelectable()==panel1.box1)panel1.text.append("高丽华"+"\n");elseif(e.getItemSelectable()==panel1.box2)panel1.text.append("饶林"+"\n");elseif(e.getItemSelectable()==panel1.box3)panel1.text.append("谌凯"+"\n");elseif(e.getItemSelectable()==panel1.box4)panel1.text.append("韩伟虎"+"\n");elseif(e.getItemSelectable()==panel1.box5)panel1.text.append("梁继杰"+"\n");}}publicclassPraxis6_1{publicstaticvoidmain(String[]args){MyWindowwin=newMyWindow();win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}2.设计一个面板,该面板中有四个运动项目单选框和一个文本框。当某个选择项目被选中时,在文本框中显示该选择项目。解析:只能选一个,按上一题,先把注释填上,然后修改如下。publicvoiditemStateChanged(ItemEvente){if(e.getItemSelectable()==panel1.box1)panel1.text.setText("高丽华);elseif(e.getItemSelectable()==panel1.box2)panel1.text.setText("饶林");elseif(e.getItemSelectable()==panel1.box3)panel1.text.setText("谌凯");elseif(e.getItemSelectable()==panel1.box4)panel1.text.setText("韩伟虎");elseif(e.getItemSelectable()==panel1.box5)panel1.text.setText("梁继杰");}}3.略4.设计一个窗口,取默认布局BorderLayout布局。北面添加一个列表,列表有4门课程选项。中心添加一个文本区,当选择列表中的某门课程后,文本区显示相应课程的介绍解析:importjava.util.*;importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;importjavax.swing.event.*;classwindowextendsJFrameimplementsListSelectionListener{JListlist;JTextAreatextArea;Stringnames[]={"C++","JAVA","马哲","法基"};Stringtimes[]={"好学的课","好学的课","无聊的课","无聊的课"};window(){super("Praxis6_4");textArea=newJTextArea(5,10);list=newJList(names);list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);list.addListSelectionListener(this);textArea.setBackground(Color.GREEN);add(list,BorderLayout.NORTH);add(textArea,BorderLayout.CENTER);setBounds(50,50,400,200);setVisible(true);validate();}publicvoidvalueChanged(ListSelectionEvente){JListlistValue=(JList)e.getSource();inti=listValue.getSelectedIndex();textArea.setText(""+names[i]);textArea.append(""+times[i]+"开课");}}publicclassPraxis6_4{publicstaticvoidmain(Stringargs[]){windowwin=newwindow();win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}5.略了吧。。。自己改改。6.设计一个JFrame窗口,窗口中心添加一个文本区。另添加4个菜单,每个菜单都有菜单项,每个菜单项都有对应快捷键,选择某个菜单项时,窗口中心的文本区显示相应信息。解析:仿记事本。importjava.util.*;importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;importjavax.swing.event.*;classMyWindowextendsJFrameimplementsActionListener{JMenuBarmenubar;JMenumenu1,menu2,menu3,menu4;JMenuItemitem1,item2,item3,item4,item5,item6,item7,item8,item9;JTextAreatext;MyWindow(){super("Praxis6_6");setSize(500,500);menubar=newJMenuBar();menu1=newJMenu("文件(F)");menu2=newJMenu("编辑(E)");menu3=newJMenu("查看(V)");menu4=newJMenu("帮助(H)");item1=newJMenuItem("新建(N)");item2=newJMenuItem("打开(O)");item3=newJMenuItem("保存(S)");item4=newJMenuItem("退出(X)");item5=newJMenuItem("全选(A)");item6=newJMenuItem("时间/日期(F5)");item7=newJMenuItem("状态(S)");item8=newJMenuItem("帮助主题(H)");item9=newJMenuItem("关于(A)");text=newJTextArea();menu1.setMnemonic(KeyEvent.VK_F);menu2.setMnemonic(KeyEvent.VK_E);menu3.setMnemonic(KeyEvent.VK_V);menu4.setMnemonic(KeyEvent.VK_H);menubar.add(menu1);menubar.add(menu2);menubar.add(menu3);menubar.add(menu4);menu1.add(item1);menu1.add(item2);menu1.add(item3);menu1.add(item4);menu2.add(item5);menu2.add(item6);menu3.add(item7);menu4.add(item8);menu4.add(item9);item1.addActionListener(this);item2.addActionListener(this);item3.addActionListener(this);item4.addActionListener(this);item5.addActionListener(this);item6.addActionListener(this);item7.addActionListener(this);item8.addActionListener(this);item9.addActionListener(this);setJMenuBar(menubar);add(text,BorderLayout.CENTER);setVisible(true);validate();}publicvoidactionPerformed(ActionEvente){text.setText(e.getActionCommand()+"被选中。");}}publicclassPraxis6_6{publicstaticvoidmain(String[]args){MyWindowwin=newMyWindow();win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}7.设计一个窗口,窗口有两个依赖于它的对话框,一个对话框负责求园的面积;另一个负责求三角形的面积。窗口中一个菜单负责打开这两个对话框。几个图形的数据通过对话框输入。8.略9.略10.编写一个演示鼠标拖动和移动的程序。界面设有一个文本区,当鼠标拖动或移动时,在文本区中输出指明鼠标拖动或鼠标移动,及鼠标位置的字样。importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;classMyWindowextendsJFrameimplementsMouseMotionListener{JTextAreatext;MyWindow(){super("Praxis6_10");setSize(500,500);text=newJTextArea();text.addMouseMotionListener(this);add(text,BorderLayout.CENTER);setVisible(true);validate();}publicvoidmouseDragged(MouseEvente){text.setForeground(Color.RED);text.setText("鼠标拖拽:坐标:("+e.getX()+","+e.getY()+")");}publicvoidmouseMoved(MouseEvente){text.setForeground(Color.BLUE);text.setText("鼠标移动:坐标:("+e.getX()+","+e.getY()+")");}}publicclassPraxis6_10{publicstaticvoidmain(String[]args){MyWindowa=newMyWindow();a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}第七章图形、图像与多媒体-不重要1.绘制五角星。第八章多线程1.建立线程的两种方法?答:继承Thread类或实现Runnable接口。2.略3.编写一个小应用程序,有两个线程,一个负责模仿圆转运动另一个模仿椭圆运动。解析:importjava.applet.*;importjava.awt.*;importjava.awt.event.*;publicclassPraxis8_3extendsAppletimplementsRunnable{ThreadredBall,blueBall;GraphicsredPen,bluePen;intblueSeta=0,redSeta=0;inta=150,b=100;publicvoidinit(){redBall=newThread(this);blueBall=newThread(this);redPen=getGraphics();bluePen=getGraphics();redPen.setColor(Color.red);bluePen.setColor(Color.blue);setBackground(Color.gray);}publicvoidstart(){redBall.start();blueBall.start();}publicvoidrun(){while(true){if(Thread.currentThread()==redBall){intx=(int)(80.0*Math.cos(Math.PI/180.0*redSeta));inty=(int)(80.0*Math.sin(Math.PI/180.0*redSeta));redPen.setColor(Color.gray);redPen.fillOval(100+x,100+y,10,10);redSeta+=3;if(redSeta>=360)redSeta=0;x=(int)(80.0*Math.cos(Math.PI/180.0*redSeta));y=(int)(80.0*Math.sin(Math.PI/180.0*redSeta));redPen.setColor(Color.red);redPen.drawOval(20+5,20+5,160,160);redPen.fillOval(100+x,100+y,10,10);try{redBall.sleep(20);}catch(InterruptedExceptione){}}elseif(Thread.currentThread()==blueBall){intx=(int)(a*Math.cos(Math.PI/180.0*blueSeta));inty=(int)(b*Math.sin(Math.PI/180.0*blueSeta));bluePen.setColor(Color.gray);bluePen.fillOval(300+x,100+y,10,10);blueSeta+=3;if(blueSeta>=360)blueSeta=0;x=(int)(a*Math.cos(Math.PI/180.0*blueSeta));y=(int)(b*Math.sin(Math.PI/180.0*blueSeta));bluePen.setColor(Color.BLUE);bluePen.drawOval(300+5-a,100+5-b,a*2,b*2);bluePen.fillOval(300+x,100+y,10,10);try{blueBall.sleep(20);}catch(InterruptedExceptione){}}}}}4.略5.略6.模拟多人排队买球票,设球票五元一张,购票者有持五元的有持5,10,20,50,100的已知排队者持钱情况序列,试给出排队购票情况。第九章输入输出流1.略2.设计一个界面,有一个文本区和一个按钮,输出到指定文件中。importjava.util.*;importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;importjavax.swing.event.*;importjava.io.*;publicclassPraxis9_2{publicstaticvoidmain(String[]args){newMyWindow();}}classMyWindowextendsJFrameimplementsActionListener{JPanelpanel;JButtonbutton;JTextAreatextArea;JFileChooserfiledialog;Filefile=null;FileWriterfilewriter;BufferedWriterout;JLabellabel;MyWindow(){super("Praxis9_2");button=newJButton("另存为");panel=newJPanel();textArea=newJTextArea();filedialog=newJFileChooser();label=newJLabel();button.addActionListener(this);panel.add(button);panel.setLayout(newGridLayout(14,1));add(panel,BorderLayout.WEST);add(newJScrollPane(textArea),BorderLayout.CENTER);add(label,BorderLayout.SOUTH);setBounds(50,50,500,300);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);validate();setVisible(true);}publicvoidactionPerformed(ActionEvente){filedialog.setDialogTitle("另存为");intresult=filedialog.showSaveDialog(this);if(result==JFileChooser.APPROVE_OPTION){file=filedialog.getSelectedFile();label.setText(""+file.getAbsolutePath());saveAsText();}elseif(result==JFileChooser.CANCEL_OPTION){label.setText("你没有选择任何文件");}}publicvoidsaveAsText(){try{filewriter=newFileWriter(file);out=newBufferedWriter(filewriter);Stringname=file.getName().substring(file.getName().lastIndexOf(".")+1,file.getName().length());out.write(textArea.getText(),0,(textArea.getText().length()));out.flush();out.close();}catch(Exceptione){label.setText(""+e);}}}3.在一个文件中,每行存的是整数,各行整数个数不等,要求读如这个文件,然后计算每行整数的和,并存到另一个文件中。importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjavax.swing.event.*;importjava.io.*;importjava.util.*;publicclassPraxis9_3{publicstaticvoidmain(Stringargs[]){newWindow9_3();}}classWindow9_3extendsJFrameimplementsActionListener{JPanelpanel;JButtonbuttonSave,buttonCount,buttonOpen;JTextAreatextArea;JLabellabel;JFileChooserfiledialog;Filefile=null;Window9_3(){super("第九章,第三题");buttonOpen=newJButton("打开文件");buttonSave=newJButton("保存到文件");buttonCount=newJButton("计算结果");label=newJLabel("");panel=newJPanel();textArea=newJTextArea();filedialog=newJFileChooser();buttonOpen.addActionListener(this);buttonSave.addActionListener(this);buttonCount.addActionListener(this);//给按钮加监控panel.add(buttonOpen);panel.add(buttonCount);panel.add(buttonSave);//把按钮添加到panel面板上add(panel,BorderLayout.NORTH);add(newJScrollPane(textArea),BorderLayout.CENTER);add(label,BorderLayout.SOUTH);setBounds(50,50,500,300);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);validate();setVisible(true);}publicvoidactionPerformed(ActionEvente){if(e.getSource()==buttonOpen){filedialog.setDialogTitle("打开");intresult=filedialog.showOpenDialog(this);if(result==JFileChooser.APPROVE_OPTION){file=filedialog.getSelectedFile();label.setText(""+file.getAbsolutePath());showText();}elseif(result==JFileChooser.CANCEL_OPTION)label.setText("你没有选择任何文件\n");}if(e.getSource()==buttonSave){filedialog.setDialogTitle("另存为");intresult=filedialog.showSaveDialog(this);if(result==JFileChooser.APPROVE_OPTION){file=filedialog.getSelectedFile();label.setText(""+file.getAbsolutePath());saveAsText();}elseif(result==JFileChooser.CANCEL_OPTION){label.setText("你没有选择任何文件\n");}}if(e.getSource()==buttonCount){textArea.setText(null);countResult();}}publicvoidshowText(){try{FileReaderfile_reader=newFileReader(file);BufferedReaderin=newBufferedReader(file_reader);Stringss=newString();while((ss=in.readLine())!=null){textArea.append(ss+'\n');}in.close();}catch(FileNotFoundExceptione2){label.setText("文件没有找到\n");}catch(IOExceptione3){}textArea.setCaretPosition(0);}publicvoidsaveAsText(){try{FileWriterfile_writer=newFileWriter(file);BufferedWriterout=newBufferedWriter(file_writer);out.write(textArea.getText(),0,(textArea.getText().length()));out.flush();out.close();}catch(FileNotFoundExceptione2){lab

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论