java第四章课后习题解答
- 格式:doc
- 大小:162.00 KB
- 文档页数:18
第一题public class Four01 {public static double sum(int a){double sum =1;for(int i=1; i<=a;i++){sum = sum*i;}return sum;}public static void main(String[]args){int a =4;double sum = 0;double k[]=new double[a];for(int i=1; i<=4; i++){k[i-1] = sum(i);}for(int j=0;j<k.length;j++){sum = sum+k[j];}System.out.println("总数为:"+sum);}}第二题public static void main(String[]args){int a[]={1,2,3,4,5,6,7,8,9,10,11};int o=0,e=0;for(int i=0 ;i<a.length; i++){if(a[i]%2==0){e++;}else{o++;}}System.out.println("奇数个数为:"+o+"\t"+"偶数个数为:"+e); }}第三题public class Four03 {public static void main(String[]args){int oldArr[]= {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};int newArr[]=new int[16];for(int i=0,j=0;i<oldArr.length; i++){if(oldArr[i]!=0){newArr[j]=oldArr[i];j++;}}for(int i=0; i<newArr.length; i++){//必须要写这个if语句,因为newArr多余的空间默认值为0if(newArr[i]!=0)System.out.print(newArr[i]+" ");}}}第四题public class Four04 {public static void main(String[]args){ int Array[] = {1,2,3,4,5,6,7,8,9,10,11};int m = max(Array);System.out.println("最大值为:"+m);int a = min(Array);System.out.println("最小值为:"+a);int s = sum(Array);System.out.println("总数为:"+s);}public static int max(int temp[]){int z = temp[0];for(int i=0; i<temp.length; i++){if(z<temp[i]){z=temp[i];}}return z;}public static int min(int temp[]){int z=temp[0];for(int i=0; i<temp.length; i++){if(z>temp[i]){z=temp[i];}}return z ;}public static int sum(int temp[]){int sum =0;for(int i=0; i<temp.length; i++){sum = sum +temp[i];}return sum ;}}第五题public class Four05 {public static void main(String[]args){ int Array[]= {1,2,3,4,5,6,7,8,9,10,11};int a =5;int b = 100;search(a,Array);search(b,Array);}public static void search(int c,int temp[]){ boolean flag = false;for(int i=0; i<temp.length; i++){if(c == temp[i]){flag = true;}}if(flag){System.out.println("YES,此数组中存在元素"+c);}else{System.out.println("NO,此数组中不存在元素"+c);}}}第六题public class Four06 {public static void main(String[]args){int temp[] = new int[10];init(temp);print(temp);reserve(temp);System.out.println();print(temp);}public static void init(int x[]){for(int i=0; i<x.length; i++){x[i] = i;}}public static void print(int x[]){for(int i=0; i<x.length; i++){System.out.println(x[i]+"、");}}public static void reserve(int x[]){int foot =0;int head = 0;if(x.length%2 == 0){foot = x.length/2;head = foot-1;for(int i=0; i<x.length/2; i++){int temp =x[foot];x[foot] = x[head];x[head] = temp;foot++;head--;}}else{foot = x.length/2;head = foot ;for(int i=0; i<x.length/2+1; i++){int temp = x[foot];x[foot] = x[head];x[head] = temp;head--;foot++;}}}}第七题public class Four07 {public static void main(String args[]){float score[] = {90f,87f,78f,67f,93f,79f,82f,84f,71f,86f};float max = score[0];for(int i=0; i<score.length; i++){if(max<score[i]){max = score[i];}}System.out.println("最高分为:"+max);}}第八题public class Four08 {public static void main(String[] args){int Array[]={1,2,1,3,4,6,5,4,3,2,0,9,8,7,6,5,4,3,5,6,7,8,9,0,9,8,2,1,3,4,};int n1=0,n2=0,n3=0,n4=0,n5=0,n6=0,n7=0,n8=0,n9=0,n0=0;for(int i=0; i<Array.length; i++){switch(Array[i]){case 1:{n1++;break;}case 2:{n2++;break;}case 3:{n3++;break;}case 4:{n4++;break;}case 5:{n5++;break;}case 6:{n6++;break;}case 7:{n7++;break;}case 8:{n8++;break;}case 9:{n9++;break;}case 0:{n0++;break;}}}System.out.println("0---->9的个数分别为:"+n0+"、"+n1+"、"+ n2+"、"+n3+"、"+n4+"、"+n5+"、"+n6+"、"+n7+"、"+n8+"、"+n9);}}第九题public class Four09 {public static void main(String[] args){int a[]= {1,2,3,4,5,6,7,8,9,0};int maxFoot =0;int max = a[0];for(int i=0; i<a.length; i++){if(max<a[i]){max=a[i];maxFoot=i;}}int val = a[0];a[0] = a[maxFoot];a[maxFoot] = val;System.out.println(a[0]);}}第十题public class Four10 {public static void main(String[] args){int temp[]= {1,2,3,4,5,6,7,8,9,10};java.util.Arrays.sort(temp);print(temp);temp = inc(temp,13,12,34,5,6,7);java.util.Arrays.sort(temp);print(temp);}public static void print(int a[]){for(int i=0; i<a.length; i++){System.out.print(a[i]+"、");}System.out.println();}public static int[] inc(int a[],int...val){int value[] = new int[a.length+val.length];System.arraycopy(a,0,value,0,a.length);System.arraycopy(val,0 , value, a.length, val.length);return value;}}。
《疯狂Java讲义(第4版)》-----第4章【习题解答】【练习1】九九乘法表public class Multiplication_table {public static void main(String[]args){for(int i=1;i<=9;i++){for(int j=1;j<=i;j++){System.out.print(i+"X"+j+"="+(i*j));if(j!=i) System.out.print(",");}System.out.println();}}}【练习2】打印由"*"⽣成的等腰三⾓形import java.util.Scanner;public class test {public static void main(String[] args){Scanner scan=new Scanner(System.in);int n=scan.nextInt();for(int i=1;i<=n;i++){for(int j=1;j<=n-i;j++) System.out.print(" ");for(int j=1;j<=2*i-1;j++) System.out.print("*");System.out.println();}}}【练习3】⽤“*”打印⼀个圆//本程序依据x^2+y^2=r^2这个圆公式进⾏画圆import java.util.Scanner;import ng.Math;public class test{public static void main(String[] args){Scanner scan=new Scanner(System.in);double r=scan.nextDouble();for(double x=-r;x<=r;x+=2){ //此处i+=2,可以控制好更像圆,如果i++像椭圆double y=Math.sqrt(Math.pow(r, 2)-Math.pow(x, 2));for(double i=-r;i<=r;i++){//对于x坐标,遍历⼀边-r到r所有值,如果和y坐标之差的绝对值在0.5的误差范围内,我们就认为此处i=y,应该⼤⾐呢出点System.out.print((Math.abs(y-i)<=0.5 || Math.abs(-y-i)<=0.5)?'*':' ');}System.out.println();}}}输⼊输出样例:【练习4】通过字节截取实现String的substring⽅法⽅案⼀看了⽹上的各类版本,都没有实现题⽬要求,下⾯代码可以实现题⽬要求,实现和String的substring完全⼀样的功能。
第4章面向对象(下)一、填空题1. 12.重写3. final4. instanceof5. Implements6.编译时异常7. RuntimeException8.逗号二、判断题1.对2.对3.错4.对5.错6.对7.对8.错9.对10.错三、选择题1. B2. D3. D4. D5. B6. D7. C8. B9. B10.D11.C四、简答题1.抽象类和接口有如下区别:1)抽象类可以有构造方法,接口中不能有构造方法。
2)抽象类中可以有普通成员变量,接口中没有普通成员变量。
3)抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
4)抽象类中的抽象方法的访问类型可以是public, protected和(默认类型),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
5)抽象类中可以包含静态方法,接口中不能包含静态方法。
6)抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认为public static final类型。
7) 一个类可以实现多个接口,但只能继承一个抽象类。
2.在类的继承中需要注意的问题:1).在Java中,类只支持单继承,不允许多重继承,也就是说一个类只能有一个直接父类;2).多个类可以继承一个父类;3).在Java中,多层继承是可以的,即一个类的父类可以再去继承另外的父类;4).在Java中,子类和父类是一种相对概念,也就是说一个类是某个类父类的同时,也可以是另一个类的子类。
五、编程题1.Employee.java139//定义一个测试类140 public class Test{141public static void main(String[] args){142//声明一个Employee类型的数组,并创立不同子类型的对象143Employee [ ] employee = {new SalariedEmployee (“张三”,1,6000), newHourlyEmployee (“李四”,2,50,180) , new SalesEmployee (“王五” ,3, 6500,0・15),new BasePlusSalesEmployee(, 4,5000,0.15,2000)}; 144//打印每个员工的工资145for (int i = 0; i < employee.length ;i + + )146System.out.printin(Math.round(employee[i].getSalary(10)));147)148)。
第一题:FloatToInt.javaimport javax.swing.JFrame;import javax.swing.JOptionPane;public class FloatToInt extends JFrame{/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stub//输出消息提示框String str = JOptionPane.showInputDialog("请输入一个成绩:");//先将输入的浮点数(是String类型)转化成float类型float f = Float.parseFloat(str);//将浮点数强制转换成int型int score = (int) f;//创建一个FloatToInt对象,以便于调用makeWarning(String warning)方法FloatToInt a = new FloatToInt();//调用makeWarning(String warning)方法a.makeWarning("整数部分是:"+score);}//定义消息对话框makeWarning(String warning)方法public void makeWarning(String warning){JOptionPane.showMessageDialog(this, warning, "输出一个浮点数的整数部分", JOptionPane.PLAIN_MESSAGE);}}第二题Score.javaimport javax.swing.JFrame;import javax.swing.JOptionPane;public class Score extends JFrame{public static void main(String[] args){//输出消息提示框String str = JOptionPane.showInputDialog("请输入一个成绩:");//先将输入的浮点数(是String类型)转化成float类型float f = Float.parseFloat(str);//创建Score对象,以便于调用makeWarning(String warning)方法Score s = new Score();//如果大于60,及格if(f>=60){//调用Score对象的makeWarning(String warning)方法s.makeWarning("及格");}else{//不及格//调用Score对象的makeWarning(String warning)方法s.makeWarning("不及格");}}//定义消息对话框makeWarning(String warning)方法public void makeWarning(String warning){JOptionPane.showMessageDialog(this, warning, "判断是否及格", JOptionPane.WARNING_MESSAGE);}}第三题Rectangle.javapackage homework;//创建一个Rectangle类public class Rectangle {//定义成员变量:包括length和width属性float length=1f; //定义length属性,默认值为1float witdh=1f; //定义width属性,默认值为1//定义获取length属性的方法public float getLength() {return length;}//定义设置length属性的方法public void setLength(float length) {//判断矩形的长度是否大于20.0if(length>20.0f){System.out.println("该矩形的长大于20.0!");}else{System.out.println("该矩形的长小于20.0!");}this.length = length;}//定义获取width属性的方法public float getWitdh() {return witdh;}//定义设置width属性的方法public void setWitdh(float witdh) {//判断矩形的宽度是否大于20.0if(witdh>20.0f){System.out.println("该矩形的宽大于20.0!");}else{System.out.println("该矩形的宽小于20.0!");}this.witdh = witdh;}/*//定义构造方法,设置属性的默认值Rectangle(int length,int width){length =1;width =1;}*///定义计算矩形周长的方法perimeterpublic float perimeter(float length,float width){//定义一个表示周长的int型变量perimeterfloat perimeter;perimeter = (length+width)*2;return perimeter;}//定义计算矩形面积的方法areapublic float area(float length,float width){//定义一个表示面积的int型变量areafloat area;area = length*width;return area;}/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stub//创建一个Rectangle类的对象Rectangle r = new Rectangle();//调用计算矩形周长的perimeter方法(先获取对象r默认的属性值r.getLength(), r.getWitdh())float p = r.perimeter(r.getLength(), r.getWitdh());//调用计算矩形面积的area方法(先获取对象r默认的属性值r.getLength(), r.getWitdh())float area = r.area(r.getLength(), r.getWitdh());//打印输出该矩形的周长和面积System.out.println("该矩形的周长为:"+p+"\n 面积为:"+area);r.setLength(30.6f);r.setWitdh(13.5f);// 调用计算矩形周长的perimeter方法(先获取对象r默认的属性值r.getLength(), r.getWitdh())float p1 = r.perimeter(r.getLength(), r.getWitdh());// 调用计算矩形面积的area方法(先获取对象r默认的属性值r.getLength(), r.getWitdh())float area1 = r.area(r.getLength(), r.getWitdh());//打印输出该矩形的周长和面积System.out.println("该矩形的周长为:"+p1+"\n 面积为:"+area1);}}。
第4章习题参考答案一、简答题1.Java提供了哪些数据类型,全部写出来。
整型:byte,short,int,long数值型浮点型:float,double基本数据类型字符型:char数据类型布尔型:boolean类:class复合数据类型字符串:String接口:interface2.如何进行数据类型的转换?有2种方式:自动类型转换:运算时,不同类型的数据先转换成同一类型后再参与运算,转换的原则是位数少的类型转换成位数多的类型,由系统自动处理。
强制类型转换:当位数多的类型向位数少的类型进行转换时,需要用户明确说明要转换的类型,需要用户在程序中指明。
3.类的修饰符有哪些?有什么区别?类的修饰符包括访问控制修饰符、静态修饰符static、最终说明符final。
访问控制修饰符包括4种类型:privat、default、protected、public。
用static声明的成员变量被视为类的成员变量,而不能当成实例对象的成员变量,也就是说,静态变量是类固有的,可以被直接引用,而其它成员变量声明后,只有生成对象时才能被引用。
4.public的类和abstract的类有什么不一样?public的类是公共类,可以被继续,可以实例化,可以被其他包访问。
abstract的类是抽象类,其中一定含有抽象方法,abstract class的子类在继承它时,对非抽象方法既可以直接继承,也可以覆盖;而对抽象方法,可以选择实现,也可以通过再次声明其方法为抽象的方式,无需实现,留给其子类来实现,但此类必须也声明为抽象类。
5.什么是最终类?如何声明?最终类不能被继承,也没有子类。
final类中的方法默认是final的。
final方法不能被子类的方法覆盖,但可以被继承。
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
声明方法:final class ClassName。
二、操作题1.创建一个学生类Student,包括学号no、姓名name、年龄age、性别sex四个属性以及学习study、实践practice两个方法。
第4章1.假定乘坐飞机时,每位顾客可以免费托运20kg以内的行李,超过部分按每公斤收费1.2元,以下是相应的计算收费程序。
该程序存在错误,请找出。
public class Test{public static void main(String[] args) throws IOException{float w,fee;//以下代码为通过控制台交互输入行李重量InputStreamReader reader=new InputStreamReader(System.in);BufferedReader input=new BufferedReader(reader);System.out.println("请输入旅客的行李重量:");String temp=input.readLine();w = Float.parseFloat(temp); //字符串转换为单精度浮点型fee = 0;if ( w > 20);fee = (float)1.2 * (w-20);System.out.println("该旅客需交纳的托运费用:"+fee+"元");}}缺少import java.io.*; 语句2.有一条长的阶梯,如果每步2阶,则最后剩1阶,每步3阶则剩2阶,每步5阶则剩4阶,每步6阶则剩5阶,只有每步7阶的最后才刚好走完,一阶不剩,问这条阶梯最少共有多少阶?找出以下求解程序的错误所在。
public class Test{ public static void main(String[] args){int i;while(i%2==1&&i%3==2&&i%5==4&&i%6==5&&i%7==0) {i++;}System.out.println("这条阶梯最少有:"+i+"阶");}}1)变量i应进行初始化。
Java第四章课后习题解答:1.//filename: App4_1.javaimport java.io.*;public class App4_1{public static void main(String[] args)throws IOException{ float score;String str;BufferedReader buf=new BufferedReader(new InputStreamReader (System.in));System.out.println("请你输入一个成绩: ");str=buf.readLine();score=Float.parseFloat(str);int grade=(int)score/10;switch(grade){case 10:case 9: System.out.println(" 优");break;case 8: System.out.println(" 良");break;case 7: System.out.println(" 中");break;case 6: System.out.println(" 及格");break;default: System.out.println(" 不及格");}}}2.//filename: App4_2.javaimport java.io.*;public class App4_2{public static void main(String[] args){int score;int grade;char result;Scanner b = new Scanner(System.in);score = b.nextInt();grade = score / 10;switch(grade)case 10:case 9:case 8: result = 'A';break;case 7: result = 'B';break;case 6: result = 'C';break;default: result = 'D';break;}System.out.println(result);}}3.//filename: App4_3.javapublic class App4_3{public static void main(String[] args) {int i;for( i=1;i<=100;i++){if(i%3==0 && i%7==0)System.out.println("i="+i);}}}4.//filename: App4_4.javapublic class App4_4{public static void main(String[] args) {int i,n;int s=0;for(i=1,i<=n,i++)n=i*n;s=s+n;System.out.println("s="+s);}}//filename: App4_5.javaimport java.util.*;public class App4_5{public static void main(String arg[]){Scanner insert=new Scanner(System.in);int n;System.out.print("请输入一个数字n:");n = insert.nextInt();double b=1;double e=1;double f=1;double g= (-1);double sum=0;for (int i=1; i <= n ; i++ ){e=e*i;b=( 1 / e );g = g*(-1);f=b*g;sum=sum+f;}System.out.println("sum=1!-(1/2!)+(1/3!)-(1/4!)+......-((-1)^(n-1))*(1/n!)="+sum); }}6.//filename: App4_6.javapublic class App4_6{public static void main(String[] args){for(int i=100; i<1000; i++){int gw = i%10;int sw = i/10%10;int bw = i/100;int gl=g*g*g;int sl=s*s*s;int bl=b*b*b;int s = gl+sl+bl;boolean eq = s==i;if(eq)System.out.println(i+"="+bw+"^3+"+sw+"^3+"+gw+"^3"); }}}}7.//filename: App4_7.javaimport java.util.*;public class App4_7{public static void main(String[] args){int x,s=0;System.out.print("请输入你需要的整数:");Scanner scan=new Scanner(System.in);x=scan.nextInt();for(int i=1;i<x;i++){if(x%i==0){s=s+i;}els{continue;}}if(s==x){System.out.println(x+"是完全数");}else{System.out.println(x+"不是完全数");}}}8.//filename: App4_8.javaimport java.util.*;public class App4_8{public static void main(String[] args){String n;int d,x;int m,end=0,sum=0;System.out.print("请输入一个数:");Scanner scan=new Scanner(System.in);n=scan.nextLine();d=n.length();x=Integer.parseInt(n);for (int i=1; i<=d;i++ ){m=x%10;x=x/10;end=end+m;}System.out.println(end);}}9.//filename: App4_9.javaimport java.util.*; public class App4_9 {public static void main(String arg[]){Scanner insert=new Scanner(System.in);float i;int j;float k;System.out.print("输入一个浮点型数字:");i = insert.nextFloat();j = (int)i;k = i-j;System.out.println("输入的数字的整数部分:"+j);System.out.println("输入的数字的小数部分:"+k);}}10.//filename: App4_10.javapublic class App4_10{public static void main(String arg[]){double x=3000;int y=0;while (x >= 5 ){x *= 0.5;y += 1;}System.out.println("需要"+y+"天,绳子的长度会短于米"); }}11.//filename: App4_11.javapublic class App4_11{public static void main(String arg[]){int q;int h = 1;for (int i= -1 ; i <= 4 ; i++ ){h = h + i;q = h;System.out.println();for (int j=i+2 ; j <= 5 ; j++ ){System.out.print((q=q+j)+"\t");}}}}。
第四章编程题1. 按要求完成以下题目(1)Circle( ) // 将半径设为0Circle(double r ) // 创建 Circle 对象时将半径初始化为r③三个成员方法double getArea( ) //获取圆的面积double getPerimeter( ) // 获取圆的周长void show( ) //将圆的半径、周长、面积输出到屏幕(2)编写一个圆柱体类Cylinder ,它继承于上面的Circle 类。
还拥有:①一个成员变量double hight(私有,浮点型);// 圆柱体的高;②构造方法Cylinder (double r, double h )//创建Circle对象时将半径初始化为r③成员方法double getVolume( ) // 获取圆柱体的体积void showVolume( ) // 将圆柱体的体积输出到屏幕编写应用程序,创建类的对象,分别设置圆的半径、圆柱体的高,计算并分别显示圆半径、圆面积、圆周长,圆柱体的体积。
【参考答案】import java.math.*;class Circle{private double radius;public Circle() {radius=0;}public Circle(double r) {radius=r;}void setRadius(double r) {this.radius=r;}double getRadius(){return this.radius;}double getArea() {return Math.PI*radius*radius;}double getPerimeter() {return Math.PI*2*radius;}void show() {System.out.println("圆的半径为"+radius+"\n圆的周长为"+this.getPerimeter()+"\n圆的面积为"+this.getArea());}}class Cylinder extends Circle{double hight;public Cylinder(double r,double h) {super.setRadius(r);this.hight=h;}double getVolume(){double volume=super.getArea()*hight;return volume;}void showVolume() {System.out.println("圆柱的面积为"+this.getVolume());}}public class Example01 {public static void main(String[] args) {Circle circle=new Circle(5);circle.show();Cylinder cylinder=new Cylinder(2,5);cylinder.showVolume();}}2.按要求编写一个Java应用程序:(l)定义一个接口CanCry,描述会吼叫的方法public void cry()(2)分别定义狗类(Dog)和猫类(Cat),实现CanCry接口。
第4章图形用户界面设计【1】什么是图形用户界面?试列举出图形用户界面中你使用过的组件。
[解答]:图形用户界面或图形用户接口(Graphical User Interface,GUI)是指采用图形方式显示的计算机操作环境用户接口。
与早期计算机使用的命令行界面相比,图形界面对于用户来说更为简便易用。
(比如你用windowsXP和使用DOS操作系统的差别)。
GUI是事件驱动的,也就是说,一旦用户与GUI交互,GUI组件就会生成”事件“(动作)。
常见交互包括移动鼠标、单击鼠标按钮、在文字段输入、从菜单选择一个选项以及关闭一个窗口等等。
在windwosXP的GUI中,使用过窗口,菜单条,按钮等#【2】简述Java的事件处理机制。
什么是事件源?什么是监听者?在Java的图形用户界面中,谁可以充当事件源?谁可以充当监听者?[解答]:java的事件处理机制就是,事件源允许监听器注册的事件对象,在事件发生的时候想相关的注册对象发送一个,事件对象,监听器便根据相关的信息来选择运行相关的代码。
事件源:英文名为event source,是指事件发生的地方,也就是引起事件的组件,按钮Button,文本组件等都可以当做事件源。
比如说,你点击一个button,那么button就是事件源,要想使button对某些事件进行响应,你就需要注册特定的监听者。
(具体请看第5章的事件处理)监听者:英文名为event handler事件处理者,又叫监听器。
具体的对监听的事件类,当它监听到event object产生的时候,它就调用相应的方法,进行处理。
在java中,AWT组件和swing组件都可以当做事件源;java.awt.event.*,里面各种类都可以为监听者。
【3】动作事件的事件源可以有哪些?如何响应动作事件?[解答]:动作事件的事件源可以有:Button,JButton,MenuItem,等。
响应动作事件的过程一般为:声明和实例化事件源,如:Button btn=new Button(“确定”);注册监听:btn.addActionListener(this); //this指明是在当前类实现处理实现接口:public void actionPerformed(ActionEvent e){//具体代码};【4】说明文本框与标签之间的区别。
[解答]:文本框(TextField)和标签(Label)都可以进行文字表达。
TextField允许用户编辑单行文本的文本组件,他可以添加相应的监听事件;而Label 对象是一个可在容器中放置文本的组件。
一个标签只显示一行只读文本。
文本可由应用程序更改,但是用户不能直接对其进行编辑。
【5】编写程序包含一个标签、一个文本框和一个按钮,当用户单击按钮时,程序把文本框中的内容复制到标签中。
[解答]:Test4_5.javaimport java.awt.*;import java.awt.event.*;public class Test4_5 extends Frame implements ActionListener{Label lb;TextField txtFl;Button btn;public Test4_5(){//界面布局和初始化super("文本框和标签的练习");setSize(260,200);setVisible(true);setLayout(new FlowLayout());lb=newLabel(" ");//用空格占位,以防止label个别字符出现问题txtFl=new TextField(20);btn=new Button("显示字符");add(txtFl);add(btn);add(lb);addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent we){System.exit(0);}} );validate();//增加监听btn.addActionListener(this);}public void actionPerformed(ActionEvent e){String strtmp=txtFl.getText();lb.setText(strtmp);lb.setForeground(Color.red);}public static void main(String[] args){new Test4_5();}}【6】设计一个加法计算器,如图4.25所示(课本P124),在文本框中输入两个整数,单击“=”按钮时,在第三个文本框中显示这两个数据的和。
[解答]:Test4_6.javaimport java.awt.*;import java.awt.event.*;class Test4_6 extends Frame implements ActionListener {TextField txtFl1,txtFl2,txtFl3;Button btn;public Test4_6(){super("简单加法运算器");setSize(300,200);setVisible(true);setLayout(new FlowLayout());txtFl1=new TextField(5);txtFl2=new TextField(5);txtFl3=new TextField(10);btn=new Button("=");add(new Label("请输入整数"));add(txtFl1);add(new Label("+"));add(txtFl2);add(btn);add(txtFl3);addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent we){System.exit(0);}} );validate();btn.addActionListener(this);}public void actionPerformed(ActionEvent e){int add=Integer.parseInt(txtFl1.getText()) +Integer.valueOf(txtFl2.getText()).intValue();//两种字符串转整形的方法txtFl3.setText(String.valueOf(add));}public static void main(String[] args){new Test4_6();}}【7】说明文本框与文本区之间的区别,它们都可以引发什么事件?如何响应此事件?[解答]:TextField 对象是允许编辑单行文本的文本组件。
TextArea 对象是显示文本的多行区域。
可以将它设置为允许编辑或只读TextFiled和TextArea可以引用KeyEvent,ActionEvent,分别用使用组件的addKeyListener 方法注册和addActionListener以接收事件。
【8】设计一个计算器,其中要使用按钮、文本框、布局管理和标签等构件,能实现加、减、乘、除运算。
[解答]:Text4_8.javaimport java.awt.*;import java.awt.event.*;public class Test4_8 extends Frame implements ActionListener{TextField txtFl1,txtFl2,txtFl3;Button btn1,btn2,btn3,btn4,btn5;public Test4_8(){super("简单的四则运算器");setSize(300,400);setVisible(true);setLayout(new GridLayout(3,1));txtFl1=new TextField(5);txtFl2=new TextField(5);txtFl3=new TextField(5);btn1=new Button("+");btn2=new Button("-");btn3=new Button("*");btn4=new Button("÷");Panel p1=new Panel();p1.add(txtFl1);p1.add(txtFl2);p1.add(new Label("="));p1.add(txtFl3);Panel p2=new Panel();p2.add(btn1);p2.add(btn2);p2.add(btn3);p2.add(btn4);add(new Label("请在下面输入运算数并运算规则进行运算:"));add(p1);add(p2);addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent we){System.exit(0);}} );validate();btn1.addActionListener(this);btn2.addActionListener(this);btn3.addActionListener(this);btn4.addActionListener(this);}public void actionPerformed(ActionEvent e){float num1=Float.valueOf(txtFl1.getText()).floatValue();float num2=Float.valueOf(txtFl2.getText()).floatValue();//两种字符串转整形的方法float rs=0;if (e.getSource()==btn1){rs=num1+num2;txtFl3.setText(String.valueOf(rs));}else if (e.getSource()==btn2) {rs=num1-num2;txtFl3.setText(String.valueOf(rs));}else if (e.getSource()==btn3) {rs=num1*num2;txtFl3.setText(String.valueOf(rs));}else if (e.getSource()==btn4) {rs=num1/num2;txtFl3.setText(String.valueOf(rs));}}public static void main(String[] args){new Test4_8();}}【9】创建一个窗体,窗体中有一个按钮,当单击按钮后,就会弹出一个新窗体。