这次共四题:创建和使用JAVA类,并进行Applet可视化编程练习。
// Ex2_1.java
/**
* 题目要求:
* 编写程序,找出100~700间能同时被3、7、11整除的数
* 源程序保存为Ex2_1.java。
**/
public class Ex2_1
{
public static void main(String[] args)
{
System.out.println("下面是在100~700间能同时被3、7、11整除的数:\n");
int number;
for (number = 100; number <= 700; ++number)
{
if( (0 == number % 3) && (0 == number % 7) && (0 == number % 11))
{
System.out.println(+ number + "\n");
}
}
}
}
/**
* 运行结果:
* 下面是在100~700间能同时被3、7、11整除的数:
*
* 231
*
* 462
*
* 693
*
**/
// Ex2_2.java
/**
* 题目要求:
* 求1!+2!+...20!的和并输出,同时要求把1!、2!、3!...的结果存放到一个数组中,并输出数组的各元素。
* 源程序保存为Ex2_2.java。
**/
public class Ex2_2
{
public static void main(String[] args)
{
long save[] = new long[20];
long sum = 0;
for (int i = 0; i != 20; ++i)
{
save[i] = i + 1;
long result = 1;
for (long calculate = i + 1; calculate > 0; --calculate)
{
result *= calculate;
}
save[i] = result;
System.out.println(+ (i + 1) + "阶乘的结果是:" + save[i] + "\n");
sum += save[i];
}
System.out.println("1!+2!+...20!的和是:" + sum + "\n");
}
}
// 下面是运行结果:
// 1阶乘的结果是:1
//
// 2阶乘的结果是:2
//
// 3阶乘的结果是:6
//
// 4阶乘的结果是:24
//
// 5阶乘的结果是:120
//
// 6阶乘的结果是:720
//
// 7阶乘的结果是:5040
//
// 8阶乘的结果是:40320
//
// 9阶乘的结果是:362880
//
// 10阶乘的结果是:3628800
//
// 11阶乘的结果是:39916800
//
// 12阶乘的结果是:479001600
//
// 13阶乘的结果是:6227020800
//
// 14阶乘的结果是:87178291200
//
// 15阶乘的结果是:1307674368000
//
// 16阶乘的结果是:20922789888000
//
// 17阶乘的结果是:355687428096000
//
// 18阶乘的结果是:6402373705728000
//
// 19阶乘的结果是:121645100408832000
//
// 20阶乘的结果是:2432902008176640000
//
// 1!+2!+...20!的和是:2561327494111820313
// Ex2_3.java
/**
* 题目要求:
* 运行书本P59页例4.1,并修改程序实现两个数的相乘,
* 修改源程序保存为Ex2_3.java。
*/
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
public class Ex2_3 extends Applet implements ActionListener{
Label label1 = new Label("*");
Label label2 = new Label("=");
TextField field1 = new TextField(6);
TextField field2 = new TextField(6);
TextField field3 = new TextField(6);
Button button1 = new Button("相乘");
public void init(){
add(field1);
add(label1);
add(field2);
add(label2);
add(field3);
add(button1);
button1.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
int x = Integer.parseInt(field1.getText()) * Integer.parseInt(field2.getText());
field3.setText(Integer.toString(x));
}
}
<HTML>
<applet code = "Ex2_3.class" height = 200 width = 400>
</applet>
</HTML>
上题结果截图:
// Ex2_4.java
/**
* 题目要求:
* 1)创建一个描述平面坐标系中的点及其操作的类Point,添加两个double类型的属性x,y,描述点在坐标系中的位置。
* 2)在Point中添加方法:
* 初始化x和y的构造函数;
* 返回x和y值的getX( )和getY( );
* 将点平移w(水平)和h(垂直)的方法shiftPoint (double w, double h);
* 确定点在第几象限的方法whatQuadrant( ),并返回结果;
* 3)编写程序测试类Point,使用上面定义的各个方法,并将其结果输出,源程序保存为Ex2_4.java。
**/
class Point
{
double x;
double y;
// construction
Point (double tempX, double tempY)
{
x = tempX;
y = tempY;
System.out.println("初始化该Point类 x = " + x + " ,y = " +y);
}
// get value
public double getX()
{
return x;
}
public double getY()
{
return y;
}
// 将点平移w(水平)和h(垂直)的方法shiftPoint (double w, double h);
public void shiftPoint(double w, double h)
{
x += w;
y += h;
return;
}
// 确定点在第几象限的方法whatQuadrant( ),并返回结果;
public int whatQuadrant()
{
if (0.0 == x && 0.0 == y)
{
return 0;
}
else if (x > 0.0 && y > 0.0)
{
return 1;
}
else if (x < 0.0 && y > 0.0)
{
return 2;
}
else if (x < 0.0 && y < 0.0)
{
return 3;
}
else if (x > 0.0 && y < 0.0)
{
return 4;
}
else if (y == 0.0) // 坐标位于X轴上
{
return 5;
}
else if( x == 0.0) // 坐标位于Y轴上
{
return 6;
}
else
{
return 7;
}
}
public static void testAllFunction(Point test, double x, double y)
{
System.out.println("使用get()函数得: x = " + test.getX() + ", y = " + test.getY() );
switch(test.whatQuadrant())
{
case 0:
{
System.out.println("使用whatQuadrant()函数知该Point位于坐标原点" );
break;
}
case 1:
{
System.out.println("使用whatQuadrant()函数知该Point位于第1象限" );
break;
}
case 2:
{
System.out.println("使用whatQuadrant()函数知该Point位于第2象限" );
break;
}
case 3:
{
System.out.println("使用whatQuadrant()函数知该Point位于第3象限" );
break;
}
case 4:
{
System.out.println("使用whatQuadrant()函数知该Point位于第4象限" );
break;
}
case 5:
{
System.out.println("使用whatQuadrant()函数知该Point位于 x 轴" );
break;
}
case 6:
{
System.out.println("使用whatQuadrant()函数知该Point位于 y 轴" );
break;
}
}
test.shiftPoint(x, y);
System.out.println("使用shiftPoint()函数移动后的 x = " + test.getX() + ", y = " + test.getY() + "\n");
}
public static void main(String args[])
{
System.out.println("测试在Point的main中调用运行成功,下面开始关于Point类的方法测试\n");
Point zero = new Point(0, 0);
testAllFunction(zero, 6, 8);
Point one = new Point(6, 8);
testAllFunction(one, 6, 8);
Point two = new Point(-7, 6);
testAllFunction(two, 6, 8);
Point three = new Point(-6, -8);
testAllFunction(three, 6, 8);
Point four = new Point(6, -8);
testAllFunction(four, 6, 8);
}
}
public class Ex2_4
{
public static void main(String args[])
{
Point.main(args);
}
}
// 下面是运算结果:
// 测试在Point的main中调用运行成功,下面开始关于Point类的方法测试
//
// 初始化该Point类 x = 0.0 ,y = 0.0
// 使用get()函数得: x = 0.0, y = 0.0
// 使用whatQuadrant()函数知该Point位于坐标原点
// 使用shiftPoint()函数移动后的 x = 6.0, y = 8.0
//
// 初始化该Point类 x = 6.0 ,y = 8.0
// 使用get()函数得: x = 6.0, y = 8.0
// 使用whatQuadrant()函数知该Point位于第1象限
// 使用shiftPoint()函数移动后的 x = 12.0, y = 16.0
//
// 初始化该Point类 x = -7.0 ,y = 6.0
// 使用get()函数得: x = -7.0, y = 6.0
// 使用whatQuadrant()函数知该Point位于第2象限
// 使用shiftPoint()函数移动后的 x = -1.0, y = 14.0
//
// 初始化该Point类 x = -6.0 ,y = -8.0
// 使用get()函数得: x = -6.0, y = -8.0
// 使用whatQuadrant()函数知该Point位于第3象限
// 使用shiftPoint()函数移动后的 x = 0.0, y = 0.0
//
// 初始化该Point类 x = 6.0 ,y = -8.0
// 使用get()函数得: x = 6.0, y = -8.0
// 使用whatQuadrant()函数知该Point位于第4象限
// 使用shiftPoint()函数移动后的 x = 12.0, y = 0.0