当前位置:文档之家› java2实用教程耿祥义_张跃平编著(3版)习题解答__课后答案

java2实用教程耿祥义_张跃平编著(3版)习题解答__课后答案

java2实用教程耿祥义_张跃平编著(3版)习题解答__课后答案
java2实用教程耿祥义_张跃平编著(3版)习题解答__课后答案

java2实用教程耿祥义张跃平编著(3版)习题解答1-17章完整版.doc

第一章习题

1.

需3个步骤:

1)用文本编辑器编写源文件

2)使用javac编译源文件,得到字节码文件

3)应用程序使用解释器运行;小应用程序使用浏览器运行。

2.

应用程序必须有一个类含有public static void main(String args[])方法,含有该方法的类称为应用程序的主类。小应用程序必须有一个类是java.applet.Applet类的子类,该类称做主类。应用程序中可以没有public类,若有的话可以是应用程序中的任何一个类。小应用程序的主类必须用public修饰。

3.

java的源程序是由若干个书写形式互相独立的类组成的。小应用程序的主类必须用public修饰。应用程序中可以没有public类,若有的话可以是应用程序中的任何一个类。一个java的源程序至多可以有一个public类。Java源文件的名字可以和其中某个类的名字相同,扩展名是.java,但是,如果源程序中有public类,那么源文件的名字必须和这个public 类的名字相同,扩展名是.java。

4.属于操作,解答略。

第二章习题

1.用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符。标识符由字母、下划线、美元符号和数字组成,并且第一个字符不能是数字字符

2.关键字就是Java语言中已经被赋予特定意义的一些单词,不可以把关键字作为名字来用。

3.boolean ,char,byte,short,int,long,float,double。

4.b=x;

5.数组b的长度为4

b[0]=1

6.属于操作题,解答略。

7.属于操作题,解答略。

8.

public class E

{ public static void main (String args[ ]) { char cStart='α',cEnd='ω';

for(char c=cStart;c<=cEnd;c++)

{ System.out.print(" "+c);

}

}

}

第三章习题

1.你爱她

2.beep!!

3.

public class Xiti3_3

{ public static void main(String args[])

{ double sum=0,a=1;

int i=1;

while(i<=20)

{ sum=sum+a;

i++;

a=a*i;

}

System.out.println("sum="+sum);

}

}

4.

public class Xiti4

{ public static void main(String args[])

{ int i,j;

for(j=2;j<=100;j++)

{ for(i=2;i<=j/2;i++)

{ if(j%i==0)

break;

}

if(i>j/2)

{ System.out.print(" "+j);

}

}

}

}

5.

class Xiti5

{ public static void main(String args[])

{ double sum=0,a=1,i=1;

do { sum=sum+a;

i++;

a=(1.0/i)*a;

}

while(i<=20);

System.out.println("使用do-while循环计算的sum="+sum);

for(sum=0,i=1,a=1;i<=20;i++)

{ a=a*(1.0/i);

sum=sum+a;

}

System.out.println("使用for循环计算的sum="+sum);

}

}

6.

class Xiti6

{ public static void main(String args[])

{ int sum=0,i,j;

for(i=1;i<=1000;i++)

{ for(j=1,sum=0;j

{ if(i%j==0)

sum=sum+j;

}

if(sum==i)

System.out.println("完数:"+i);

}

}

}

7.

public class E Xiti7

{ public static void main(String args[])

{ int m=8,item=m,i=1;

long sum=0;

while(i<=10)

{ sum=sum+item;

i++;

item=item*10+m;

}

System.out.println(sum);

for(i=1,sum=0,item=m;i<=10;i++)

{ sum=sum+item;

item=item*10+m;

}

System.out.println(sum);

}

}

8.

public class E

{ public static void main(String args[])

{ int n=1;

long sum=0;

while(true)

{ sum=sum+n;

n++;

if(sum>=8888)

break;

}

System.out.println("满足条件的最大整数:"+(n-1));

}

}

第四章习题

1.用该类创建对象时。

2.一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参

数的个数不同,或者是参数的类型不同

3.可以。不可以。

4.不可以。

5.如果子类和父类不在同一个包中,那么,子类继承了父类的protected、public成员变量做为子类的成员变量,并且继承了父类的protected、public方法为子类的方法。如果子类和父类不在同一个包里,子类不能继承父类的友好变量和友好方法。

6.成员变量又分为实例变量和类变量,用static修饰的变量是类变量。那么类变量和实例变量有什么区别呢?一个类通过使用new运算符可以创建多个不同的对象,不同的对象的实例变量将被分配不同的内存空间,如果类中的成员变量有类变量,那么所有对象的这个类变量都分配给相同的一处内存,改变其中一个对象的这个类变量会影响其它对象的这个类变量。也就是说对象共享类变量。

7.如果子类和父类在同一个包中,那么子类自然地继承了其父类中不是private的成员变量作为自己的成员变量,并且也自然地继承了父类中不是private的方法作为自己的方法。继承的成员或方法的访问权限保持不变。如果子类和父类不在同一个包中,那么子类继承了父类的protected、public成员变量做为子类的成员变量,并且继承了父类的protected、public方法为子类的方法,继承的成员或方法的访问权限保持不变。如果子类和父类不在同一个包里,子类不能继承父类的友好变量和友好方法。

如果子类中有一个方法和父类的方法名字相同,而类型不同,那么必须保证参数不同,否则将发生重载错误。

8.不可以。

9.abstract类。

10.假设B类是A类子类或间接子类,当我们用子类B创建一个对象,并把这个对象的引用放到A类的对象中时,称这个A类对象是子类对象的上转型对象。

11.可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中。那么该接口变量就可以调用被类实现的接口中的方法。

12. main方法是static方法,不能操作类的实例成员,因此,程序中的float c=a+b;语句是错误的。

13.100

14.8

100

15.接口体中包含常量定义和方法定义两部分。接口体中只进行方法的声明,不许提供方法的实现,所以,方法的定义没有方法体,且用分号“;”结尾。

如果一个类使用了某个接口,那么这个类必须实现该接口的所有方法,即为这些方法提供方法体。在类中实现接口的方法时,方法的名字、返回类型、参数个数及类型必须与接口中的完全一致。要注意的是,接口中的方法被默认是public的,所以类在实现接口方法时,一定要用public来修饰。另外,如果接口的方法的返回类型如果不是void的,那么在类中实现该接口方法时,方法体至少要有一个return语句;如果是void型,类体除了两个大括号外,也可以没有任何语句。

如果一个类声明实现一个接口,但没有实现接口中的所有方法,那么这个类必须是

abstract类。

16.

class A

{ public final void f()

{ char cStart='a',cEnd='z';

for(char c=cStart;c<=cEnd;c++)

{ System.out.print(" "+c);

}

}

}

class B extends A

{ public void g()

{ char cStart='α',cEnd='ω';

for(char c=cStart;c<=cEnd;c++)

{ System.out.print(" "+c);

}

}

}

public class Xiti16

{ public static void main (String args[ ])

{ B b=new B();

b.f();

b.g();

}

}

17.

class MyException extends Exception

{ String message;

MyException(int m)

{ message="数字"+m+"不符合要求";

}

public String toString()

{ return message;

}

}

class Student

{ public void speak(int m) throws MyException { if(m>1000) throw new MyException(m);

System.out.println(m);

}

}

public class Xiti17

{ public static void main (String args[ ])

{ Student b=new Student();

try{ b.speak(555);

b.speak(8888);

}

catch(MyException e)

{System.out.println(e.toString());

}

}

}

18.

class NopositiveException extends Exception

{ String message;

NopositiveException(int m,int n)

{ message="数字"+m+"或"+n+"不是正整数";

}

public String toString()

{ return message;

}

}

class A

{ public int f(int a,int b) throws NopositiveException

{ if(a<=0||b<=0)

{ NopositiveException exception=new NopositiveException(a,b);

throw exception;

}

if(b

{ int temp=0;

temp=a;

a=b;

b=temp;

}

int r=b%a;

while(r!=0)

{ b=a;

a=r;

r=b%a;

}

return a;

}

}

class B extends A

{ public int f(int a,int b) throws NopositiveException

{ int division=super.f(a,b);

return (a*b)/division;

}

}

public class Xiti18

{ public static void main (String args[ ])

{ A a=new A();

B b=new B();

try{

System.out.println("最大公约数:"+a.f(36,24));

System.out.println("最小公倍数:"+b.f(36,24));

}

catch(NopositiveException e)

{ System.out.println(e.toString());

}

}

}

第五章习题

1.

import java.applet.*;

import java.awt.*;

public class Boy extends Applet

{ public void paint(Graphics g)

{ String s1,s2,t1="ABCDabcd";

s1=t1.toUpperCase();

s2=t1.toLowerCase();

g.drawString(s1,30,60);

g.drawString(s2,30,90);

}

}

2.

import java.applet.*;

import java.awt.*;

public class Boy extends Applet

{ public void paint(Graphics g)

{ String s1,s2,s3,t1="ABCDabcd";

s1=t1.toUpperCase();

s2=t1.toLowerCase();

s3=s1.concat(s2);

g.drawString(s1,30,60);

g.drawString(s2,30,90);

g.drawString(s3,30,120);

}

}

3.属于操作题,解答略。

4.属于操作题,解答略。

5.属于操作题,解答略。

第六章习题

1.

import java.util.Date;

import java.text.SimpleDateFormat;

public class Xiti1

{ public static void main(String args[])

{ Date nowTime=new Date();

SimpleDateFormat matter= new SimpleDateFormat("E dd日HH时mm分");

String favorFormat=matter.format(nowTime);

System.out.println(favorFormat);

}

}

2.

import java.util.Calendar;

class CalendarBean

{ int year,month,nextDay;

public void setYear(int year)

{ this.year=year;

}

public int getYear()

{ return year;

}

public void setMonth(int month)

{ this.month=month;

}

public int getMonth()

{ return month;

}

public String[][] getCalendar()

{ String a[][]=new String[6][7];

Calendar 日历=Calendar.getInstance();

日历.set(year,month-1,1);

int 星期几=日历.get(Calendar.DAY_OF_WEEK)-1;

int day=0;

if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) { day=31;

}

if(month==4||month==6||month==9||month==11)

{ day=30;

}

if(month==2)

{ if(((year%4==0)&&(year%100!=0))||(year%400==0))

{ day=29;

}

else

{ day=28;

}

}

nextDay=1;

for(int k=0;k<6;k++)

{ if(k==0)

for(int j=星期几;j<7;j++)

{ a[k][j]=""+nextDay ;

nextDay++;

}

else

for(int j=0;j<7&&nextDay<=day;j++)

{ a[k][j]=""+nextDay ;

nextDay++;

}

}

return a;

}

}

public class Xiti2

{ public static void main(String args[])

{ CalendarBean cb=new CalendarBean();

cb.setYear(2006);

cb.setMonth(2);

String[][] rili=cb.getCalendar();

String titile[]={"日","一","二","三","四","五","六"};

for(int i=0;i

{ System.out.printf("%4s",titile[i]);

}

System.out.println("");

for(int i=0;i

{ for(int j=0;j

{ if(rili[i][j]!=null)

System.out.printf("%5s",rili[i][j]);

else

System.out.printf("%5s"," ");

}

System.out.println("");

}

}

}

3.

public class Xiti3

{ 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=2007;

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+"日相隔"+相隔天数+"天");

}

}

4.

public class Xiti4

{ public static void main(String args[])

{ double a=0,b=0,c=0;

a=12;

b=24;

c=Math.max(a,b);

System.out.println(c);

c=Math.min(a,b);

System.out.println(c);

c=Math.pow(2,3);

System.out.println(c);

c=Math.abs(-0.123);

System.out.println(c);

c=Math.asin(0.56);

System.out.println(c);

c=Math.cos(3.14);

System.out.println(c);

c=Math.exp(1);

System.out.println(c);

c=Math.log(8);

System.out.println(c);

}

}

5.

import java.math.*;

public class E

{ public static void main(String args[])

{ BigInteger sum=new BigInteger("0"),

xiang=new BigInteger("1"),

ONE=new BigInteger("1"),

TWO=new BigInteger("2"),

i=ONE,

m=new BigInteger("60");

while(https://www.doczj.com/doc/3e9163391.html,pareTo(m)<=0)

{ if(i.remainder(TWO).compareTo(ONE)==0)

sum=sum.add(xiang);

i=i.add(ONE);

xiang=xiang.multiply(i);

}

System.out.println(sum);

}

}

第七章习题

1.Frame容器的默认布局是BorderLayout布局,Panel容器的默认布局是FlowLayout布局。2.不可以

3.可以

4.

import java.util.StringTokenizer;

import java.awt.*;

import java.awt.event.*;

public class Xiti4

{ public static void main(String args[])

{ ComputerFrame fr=new ComputerFrame();

fr.setTitle("计算的窗口");

}

}

class ComputerFrame extends Frame implements TextListener

{ TextArea text1,text2;

int count=1;

double sum=0,aver=0;

public ComputerFrame()

{ setLayout(new FlowLayout());

text1=new TextArea(6,20);

text2=new TextArea(6,20);

add(text1);

add(text2);

text2.setEditable(false);

text1.addTextListener(this);

setSize(300,320);

setVisible(true);

addWindowListener(new WindowAdapter()

{ public void windowClosing(WindowEvent e)

{ System.exit(0);

}

});

validate();

}

public void textValueChanged(TextEvent e)

{ String s=text1.getText();

sum=0;

aver=0;

StringTokenizer fenxi=new StringTokenizer(s," ,'\n'");

int n=fenxi.countTokens();

count=n;

double a[]=new double[n];

for(int i=0;i<=n-1;i++)

{ String temp=fenxi.nextToken();

try { a[i]=Double.parseDouble(temp);

sum=sum+a[i];

}

catch(Exception ee)

{ count--;

}

}

aver=sum/count;

text2.setText(null);

text2.append("\n和:"+sum);

text2.append("\n平均值:"+aver);

}

}

5.

import java.util.StringTokenizer;

import java.awt.*;

import java.awt.event.*;

public class Xiti5

{ public static void main(String args[])

{ PickWordFrame pwf=new PickWordFrame();

pwf.setTitle("挑单词");

}

}

class PickWordFrame extends Frame

{ TextArea text1,text2;

Button button;

public PickWordFrame()

{ text1=new TextArea(6,20);

text2=new TextArea(6,20);

button=new Button("确定");

add(text1,BorderLayout.WEST);

add(text2,BorderLayout.EAST);

add(button,BorderLayout.SOUTH);

button.addActionListener( new ActionListener()

{ public void actionPerformed(ActionEvent e)

{ text2.append("\n"+text1.getSelectedText());

}

}

);

setSize(300,320);

setVisible(true);

addWindowListener(new WindowAdapter()

{ public void windowClosing(WindowEvent e)

{ System.exit(0);

}

});

validate();

}

}

6.

import java.applet.*;

import java.awt.*;

import java.awt.event.*;

public class Xiti6

{ public static void main(String args[])

{ ComputerFrame fr=new ComputerFrame();

fr.setTitle("计算");

}

}

class ComputerFrame extends Frame implements ActionListener { TextField text1,text2,text3;

Button button1,button2,button3,button4;

Label label;

public ComputerFrame()

{setLayout(new FlowLayout());

text1=new TextField(10);

text2=new TextField(10);

text3=new TextField(10);

label=new Label(" ",Label.CENTER);

label.setBackground(Color.green);

add(text1);

add(label);

add(text2);

add(text3);

button1=new Button("加");

button2=new Button("减");

button3=new Button("乘");

button4=new Button("除");

add(button1);

add(button2);

add(button3);

add(button4);

button1.addActionListener(this);

button2.addActionListener(this);

button3.addActionListener(this);

button4.addActionListener(this);

setSize(300,320);

setVisible(true);

addWindowListener(new WindowAdapter()

{ public void windowClosing(WindowEvent e)

{ System.exit(0);

}

});

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();

}

}

7.

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class Xiti7

{ public static void main(String args[])

{ new WindowBox();

}

}

class WindowBox extends Frame implements ActionListener { Box baseBox ,boxV1,boxV2;

TextField inputName,inputProfession,inputEmail;

Button button;

TextArea textShow;

WindowBox()

{ inputName=new TextField(20);

inputProfession=new TextField(20);

inputEmail=new TextField(20);

button=new Button("确定");

button.addActionListener(this);

textShow=new TextArea();

Panel pNorth=new Panel(),

pSouth=new Panel();

boxV1=Box.createVerticalBox();

boxV1.add(new Label("姓名"));

boxV1.add(Box.createVerticalStrut(8));

boxV1.add(new Label("email"));

boxV1.add(Box.createVerticalStrut(8));

boxV1.add(new Label("职业"));

boxV2=Box.createVerticalBox();

boxV2.add(inputName);

boxV2.add(Box.createVerticalStrut(8));

boxV2.add(inputEmail);

boxV2.add(Box.createVerticalStrut(8));

boxV2.add(inputProfession);

baseBox=Box.createHorizontalBox();

baseBox.add(boxV1);

baseBox.add(Box.createHorizontalStrut(10));

baseBox.add(boxV2);

pNorth.add(baseBox);

pSouth.add(button);

add(pNorth,BorderLayout.NORTH);

add(pSouth,BorderLayout.SOUTH);

add(textShow,BorderLayout.CENTER);

setSize(300,320);

setVisible(true);

addWindowListener(new WindowAdapter()

{ public void windowClosing(WindowEvent e)

{ System.exit(0);

}

});

validate();

}

public void actionPerformed(ActionEvent e)

{ String email=inputEmail.getText();

String regex1="\\w{1,}@\\w{1,}\56\\w{1,}",

regex2="\\w{1,}@\\w{1,}\56\\w{1,}\56\\w{1,}" ;

if(email.matches(regex1)||email.matches(regex2))

{ textShow.append(email+"\n");

}

else

{ inputEmail.setText("请输入正确格式的email");

}

}

}

8.

import java.awt.*;

import java.awt.event.*;

public class Xiti8

{ public static void main(String args[])

{ new WindowPanel();

}

}

class Mypanel extends Panel implements ActionListener

{ Button button;

TextField text;

Mypanel()

{ button=new Button(" ");

text=new TextField(12);

add(button);

add(text);

button.addActionListener(this);

}

public void actionPerformed(ActionEvent e)

{ String name=text.getText();

if(name.length()>0)

button.setLabel(name);

validate();

}

}

class WindowPanel extends Frame

{ Mypanel panel1,panel2;

WindowPanel()

{ panel1=new Mypanel();

panel2=new Mypanel();

panel1.setBackground(Color.red);

相关主题
文本预览
相关文档 最新文档