《Java2实用教程》课后习题参考答案

if((year%4==0&&year0!=0)||(year@0==0)) allDay=29; else allDay=28;

Calendar feb=Calendar.getInstance(); feb.set(2006,1,1);

int dat=feb.get(Calendar.DAY_OF_WEEK)-1; String a[]=new String[dat+allDay]; for(int i=0;i

for(int i=dat,n=1;i<(dat+allDay);i++) { if(n<=9)

a[i]=String.valueOf(n)+\else

a[i]=String.valueOf(n)+\n++; }

System.out.println(\年\月\System.out.println(\日一二三四五六\for(int j=0;j

if(j%7==0) {

System.out.println(\}

System.out.print(a[j]); } } }

3. 计算某年、某月、某日和某年、某月、某日之间的天数间隔。要求年、月、日通过mai n 方法的参数传

递到程序中。

答: import java.util.*; class Test {

public static void main(String args[]) {

Calendar c=Calendar.getInstance(); c.set(2000,0,1);

long time1=c.getTimeInMillis(); c.set(2008,7,8);

long time2=c.getTimeInMillis();

long dayCous=(time2-time1)/(1000*60*60*24);

System.out.println(\年8 月8 日和2000 年1 月1 日相隔\天\} }

4. 编程练习Mat h 类的常用方法。 答: import java.text.*; public class Test {

public static void main(String args[]) {

double a=Math.abs(-10);

System.out.println(\的绝对值是:\double maxNum=Math.max(123.456,-5.4321);

System.out.println(\与-5.4321 中的最大值是:\double minNum=Math.min(123.456,-5.4321);

System.out.println(\与-5.4321 中的最小值是:\int randomNum=(int)(Math.random()*10)+1;

System.out.println(\输出一个1 到10 的随机数是:\double powNum=Math.pow(2,10);

System.out.println(\的10 次幂是:\double sqrtNum=Math.sqrt(10);

System.out.println(\的平方根是:\double logNum=Math.log(2);

System.out.println(\的对数是:\double sinNum=Math.sin(-10);

System.out.println(\的正弦值是:\double asinNum=Math.asin(0.5);

System.out.println(\的反正弦值是:\System.out.println(\格式化之前的数是:\NumberFormat f=NumberFormat.getInstance(); f.setMaximumFractionDigits(10);

f.setMinimumIntegerDigits(4); String s=f.format(sqrtNum); System.out.println(\格式化后:\} }

5. 使用BigIntege r 类计算1!+3!+5!+7!+?的前3 0 项的和。 答: import java.math.*; public class Test {

public static void main(String args[]) {

BigInteger sum=new BigInteger(\jieCheng=new BigInteger(\ONE=new BigInteger(\i=ONE; int k=0; while(++k<=30) {

sum=sum.add(jieCheng); i=i.add(ONE);

jieCheng=jieCheng.multiply(i); i=i.add(ONE);

jieCheng=jieCheng.multiply(i); }

System.out.println(sum); } }

第7 章AWT 组件及事件处理

1. Fram e 类对象的默认布局是什么布局?和Pane l 类对象的默认布局相同吗? 答:①Frame 类对象的默认布局是BorderLayout 布局; ②不相同,Panel 类对象的默认布局是FlowLayout 布局。 2. 一个容器对象是否可以使用ad d 方法添加一个Fram e 窗口? 答: 不可以。

3. Checkbo x 对象可以触发ItemEven t 事件吗? 答: 可以。

4. 编写应用程序,有一个标题为“计算的窗口”的窗口,窗口的布局为FlowLayou t 布局。窗口中添加两

个文本区,当我们在一个文本区中输入若干个数时,另一个文本区,同时对输入的数进行求和运算并 求出平均值,也就是说随着输入的变化,另一个文本区不断地更新求和及平均值。 答: import java.awt.*; import java.awt.event.*; import java.util.*;

class Calculated extends Frame implements TextListener {

TextArea text1,text2; //定义了2 个文本区

Calculated(String s) //标题为“计算的窗口”的窗口 { super(s);

setLayout(new FlowLayout()); //窗口布局为FlowLayout text1=new TextArea(5,23); text2=new TextArea(5,23); add(text1); add(text2);

text2.setEditable(false); //显示求和结果和平均值的文本区禁止编辑 text1.addTextListener(this);

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0); } } );

setBounds(100,100,400,160); setVisible(true); validate(); }

public void textValueChanged(TextEvent e) {

String s=text1.getText();

StringTokenizer geshu=new StringTokenizer(s); int n=geshu.countTokens(); double a[]=new double[n]; for(int i=0;i

String temp=geshu.nextToken(); double date=Double.parseDouble(temp); a[i]=date; }

double sum=0,average; for(int i=0;i

sum=sum+a[i]; }

average=sum/n; text2.setText(null);

text2.append(\和:\平均数:\} }

public class Test {

public static void main(String args[]) {

Calculated calc=new Calculated(\计算的窗口\} }

5. 文本区可以使用getSelected Text()方法获取该文本区通过拖动鼠标选中的文件。编写应用程序,有一

个标题为“挑单词”的窗口,窗口的布局为BorderLayou t 布局。窗口中添加两个文本去和一个按钮组 件,要求文本区分别添加到窗口的东部区域和西部区域;按钮添加到窗口的南部区域,当单击按钮时, 程序将东部区域的文本区中鼠标选中的内容尾加到西部区域的文本区中。 答: import java.awt.*; import java.awt.event.*;

class WindowSelectedText extends Frame implements ActionListener {

TextArea text1,text2; //定义2 个文本区 Button button; //定义一个按钮

WindowSelectedText(String s) //窗口名字为“挑单词” { super(s);

setLayout(new BorderLayout()); //窗口布局是BorderLayout 布局 text1=new TextArea(6,15); text2=new TextArea(6,15);

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4