第三周课程总结:

一:class类的定义,类是由属性和方法决定

1:声明成员变量;
2:定义方法内容。
3:具有封装性,继承性,多态性。

二:this的使用

1:强调类的使用;
2:表示当前对象;
3:在构造函数中的使用;

三:static声明属性

1:static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。
2:static声明的代码块是静态代码块;

四:main方法的使用

public:表示此方法可以被外部所调用;
static:表示此方法可以由类名称直接调用;
void:主方法是程序的起点,所以不需要任何的返回值;
main:系统规定好默认调用的方法名称,执行时,默认找到main方法名称;
String args[]:表示运行时的参数 参数传递的形式:

java 类名称 参数1 参数2 参数3....

1.打印输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其中各位数字立方和等于该数本身。例如,153是一个“水仙花数”。

实验代码:

public class Main {
	public static void main(String[] args) {
		int a, b, c, i;
		for (i = 100; i < 1000; i++) {
			a = i / 100;d
			b = i % 100 / 10;
			c = i % 10;
			if (Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3) == i) {
				System.out.println(i + "是一个“水仙花数“");
			}
		}
	}
}

2. 编写Java程序,求13-23+33-43+…+973-983+993-1003的值。

实验代码:

public class Main {
	public static void main(String[] args) {
		int i, num = 0, k, l = 1;
		for (i = 1; i <= 100; i++) {
			k = 10 * i + 3;
			num = num + k * l;
			l = -1 * l;
		}
		System.out.println(+num);
	}
}

3. 编程求1!+2!+3!+…+20!。

实验代码:

public class Main {
	public static void main(String[] args) {
		int i, k, sum = 0;
		for (i = 1; i <= 20; i++) {
			for (k = 1; k <= i; k++) {
				sum += k;
			}
		}
		System.out.println(sum);
	}
}

4. 编写Java程序,计算8+88+888+…前10项之和。

实验代码:

public class Main {
	public static void main(String[] args) {
		long i, k, num = 0;
		for (i = 1; i <= 10; i++) {
			for (k = 0; k < i; k++) {
				num += Math.pow(10, k) * 8;
			}
		}
		System.out.println(num);
	}
}

  1. 一个数如果恰好等于它的因子之和,这个数就称为完数。编写程序输出1000以内的所有完数。
    实验代码:
public class he5 {
	public static void main(String[] args) {
		int i, n, max;
		for (i = 2; i <= 1000; i++) {
			max = 0;
			for (n = 1; n <= i / 2; n++) {
				if (i % n == 0)
					max += n;
			}
			if (max == i) {
				System.out.println(i);
			}
		}
	}
}

错误:当第二个for循环条件为n<=i时;实验无法输出结果。
解决:考虑后发现 基本没有因子能大于这个数的二分之一,将其改为n<=i/2.

6. 编写应用程序,输出满足1+2+3+…+n<8888的最大正整数。

实验代码:

public class he6 {
	public static void main(String[] args) {
		int i, max = 0, num = 0;
		for (i = 1; i < 8888; i++) {
			max += i;
			if (max > 8888) {
				max = num;
				break;
			} else {
				num = max;
			}
		}
		System.out.println(i-1);
	}
}

7. 使用for循环打印下面的图(等腰三角形)

实验代码:

public class he7 {
	public static void main(String[] args) {
		int i, n, h = 1, k;
		for (i = 4; i >= 0; i--) {
			for (n = 0; n < i; n++) {
				System.out.print(" ");
			}
			for (k = 1; k <= h; k++) {
				System.out.print("* ");
			}
			h++;
			System.out.print("\n");
		}
	}
}

问题:最开始输出自动换行,导致图像不正确。
解决:System.out.println(" ");是自动换行输出,System.out.print(" ");是不自动换行输出。