java2简明教程部分课后复习题答案

  • 格式:doc
  • 大小:98.00 KB
  • 文档页数:30

.专业.专注. JAVA2简明教程习题答案 第二章 课堂习题: public class Main { public static void main(String[] args) { //initialization phase初始段 float f1 = 2.5f; float f2; int a = 7; int b = 2; int c;

//processing phase 处理段 f2 = f1 + (a/b); c = (a/b);

//termination phase终止段 System.out.println("f2的值为: " + f2); System.out.println("c的值为: " + c); }

} 课后习题: 2-4 (小程序部分) import java.applet.*; import java.awt.*;

public class Gess extends Applet {

public void paint(Graphics g) { //3~10000中的任意数 int m = 20; int n = 9993;

g.drawString("本程序仅对3~10000中任意取的整数: ",80,50); g.drawString("20" ,80,65); .专业.专注.

g.drawString("9993" ,80,80); g.drawString("进行测试! " ,80,95);

while (m !=1) //假设最后得到的数一定是1,则如果不为1就换算 { if (m %2 == 0) //如果被2整除则为偶数,除以2 m = m /2; else //如果不被2整除则为奇数,乘以3再加1 { m = m *3 + 1; }

}

while (n !=1) //假设最后得到的数一定是1,则如果不为1就换算 { if (n %2 == 0) //如果被2整除则为偶数,除以2 n = n /2; else //如果不被2整除则为奇数,乘以3再加1 { n = n *3 + 1; }

} g.drawString("20换算后的值为: " + m,80,110); g.drawString("9993换算后的值为: " + m,80,125);

}

} (程序部分) import java.io.*; //引入java.io中的所有类(含输入输出类),因为程序中要用到输入类的read()方法 public class Main { public static void main(String[] args) {

byte []buf =new byte[50]; //50个字节的数组用于存字符串 String str; .专业.专注.

long m = 0; System.out.println("请输入3~10000中的任意整数(回车确认):");

try //try 语气 { System.in.read(buf); //从键盘读入一数字串保存于buf中 str = new String(buf); //buf转换成字符串对象str m = Long.parseLong(str.trim()); //数字转换成整数

}catch (Exception e){} //catch语气,Exception为异常类

while (m !=1) //假设最后得到的数一定是1,则如果不为1就换算 { if (m %2 == 0) //如果被2整除则为偶数,除以2 m = m /2; else //如果不被2整除则为奇数,乘以3再加1 { m = m *3 + 1; }

} System.out.println("换算后的值为:\t" + m);

} } 1、EX_2.5 import java.applet.Applet; import java.awt.*; public class compareNumbers extends Applet{ Label l1, l2; TextField in1, in2; int a, b;

public void init() { l1 = new Label("第一个整数:"); l2 = new Label("第二个整数:"); in1 = new TextField(8); in2 = new TextField(8); add(l1); add(in1); .专业.专注.

add(l2); add(in2); }

public boolean action(Event e, Object o) { if(e.target==in1||e.target==in2) { a = Integer.parseInt(in1.getText()); b = Integer.parseInt(in2.getText()); if (a == b) { showStatus("the two numbers are equal!"); } else if (a > b) { showStatus(a + " is larger!"); } else showStatus(b + " is larger!"); } return true; } }

2-6 public class Main { public static void main(String[] args) { // initialization phase //初始段 int j = 1; int []a; //用于存放第一个骰子的点数的整形数组 int []b; //用于存放第二个骰子的点数的整形数组 int two = 0; //相加和为2的计数器 int sev = 0; //相加和为7的计数器 int twe = 0; //相加和为12的计数器 int oth = 0; //相加和为其他数的计数器 a = new int [6]; //分配数组空间 b = a; //骰子的点数相同,这里将数组a赋给数组b(这时b和a同用一块存空间)

//processing phase 处理段 for(int i = 0; i < 6; i++) //通过循环赋值方式初始化数组 { a[i] = j++; } .专业.专注.

for(int i = 0; i < 3600; i++) //测试3600次 { //生成0~5随机数 int m = (int)(((Math.random())*6 )); int n = (int)(((Math.random())*6 ));

if ((a[m] + b[n]) == 2) //当相加和为2时对应计数器加1 two++; else if ((a[m] + b[n]) == 7) //当相加和为7时对应计数器加1 sev++; else if((a[m] + b[n]) == 12) //当相加和为12时对应计数器加1 twe++; else //当相加和为其他数时对应计数器加1 oth++;

}

//termination phase 终止段 //输出结果 //((float)two/3600)为将two/3600的结果强制转换成浮点数输出,否则输出为0 System.out.println("相加的和为 2 的次数是:\t" + two + ";\t可能性为:\t" + ((float)two/3600)); System.out.println("相加的和为 12 的次数是:\t" + twe + ";\t可能性为:\t" + ((float)twe/3600)); System.out.println("相加的和为 7 的次数是:\t"+ sev + ";\t可能性为:\t" + ((float)sev/3600)); System.out.println("相加的和为其他数的次数是:\t" + oth + ";\t可能性为:\t" + ((float)oth/3600) ); }

} .专业.专注.

第三章 课堂习题 随机产生26个英文字母a-z,直到大于u为止,用while或for语气实现 public class Main {

public static void main(String[] args) { int letter = 0;

System.out.println("用 while 语句实现: "); while(letter < 'u') { letter = (int)(Math.random()*26) + 'a'; System.out.println((char)letter); }

System.out.println("用 for 语句实现: "); for(letter = 97; letter < 'u';letter++) { letter = (int)(Math.random()*26) + 'a'; System.out.println((char)letter); } }

} 课后习题 3-1 import java.applet.Applet; import java.awt.*;

public class Display extends Applet { Label lab; TextField input;

long num; long m = 0; long n = 0; int i = 0; //数字个数的计数器

public void init() {