一、 实验目的
(1) 熟悉JDK开发环境
(2) 熟练掌握结构化程序设计方法
二、 实验内容
打印输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其中各位数字立方和等于该数本身。例如,153是一个“水仙花数”。
编写Java程序,求13-23+33-43+…+973-983+993-1003的值。
编程求1!+2!+3!+…+20!。
编写Java程序,计算8+88+888+…前10项之和。
一个数如果恰好等于它的因子之和,这个数就称为完数。编写程序输出1000以内的所有完数。
编写应用程序,输出满足1+2+3+…+n<8888的最大正整数。
使用for循环打印下面的图形。
三、 实验过程
打印输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其中各位数字立方和等于该数本身。例如,153是一个“水仙花数”。
实验源码:

package homework.one;

public class testreport1 {
    public static void main(String[] args) {
        long i=100;
        long sum,j,k,h;
        for(i=100;i<=999;i++){
            sum=i%10;
            j=i/10;
            h=j%10;
            k=j/10;
            if(i==Math.pow(sum,3)+Math.pow(h,3)+Math.pow(k,3)){
                System.out.println(i);
            }
        }
    }
}


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

package homework.one;

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

实验结果

3.编程求1!+2!+3!+…+20!
实验源码:

package homework.one;

public class testreport3
{
    public static void main(String[] args)
    {
        long count = 0;
        int j;
        for (j = 1; j <= 20; j++)
        {
            count = count + factorial(j);
        }
        System.out.println(count);
    }
    public static long factorial(long n)
    {
        long i;
        long sum = 1;
        for (i = 1; i <= n; i++)
        {
            sum = sum * i;
        }
        return sum;
    }
}

实验结果

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

package homework.one;

public class testreport4
{
    public static void main(String[] args)
    {
      long j = 0;
      long sum=0;
        for (int i = 1; i <= 10; i++)
        {
            j = j + (sum * 10) + 8;
            sum=sum*10+8;

        }
        System.out.println(j);
    }
}

实验结果

5.一个数如果恰好等于它的因子之和,这个数就称为完数。编写程序输出1000以内的所有完数。
实验代码

package homework.one;

public class testreport5
{
    public static void main(String[] args)
    {
        int i, j;                            //i是完数,j是因数
        for (i = 1; i <= 1000; i++)
        {
            int sum=0;
            for (j = 1; j <= i; j++)
            {
                if (i % j == 0)             //判断j是否为i的因数,若是则sum加j
                {
                    sum = j + sum;
                }
            }
                if ((sum - i) == i)     //判断i是否为完数,因子之和sum-i等于本身i
                {
                    System.out.println(i);//输出完数
                }
        }
    }
}

实验结果

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

package homework.one;

public class testreport6
{
    public static void main(String[] args)
    {
        int i = 1;
        int sum = 0;
        int n;
        for (i = 1; ; i++)
        {
            sum = sum + i;
            n = i - 1;
            if (sum >= 8888)
            {
                System.out.println(n);
                System.out.println(sum - i);
                break;
            }
        }
    }
}

实验结果

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

package homework.one;

public class testreport7 {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i++) {
            for (int j = 5; j >= i; j--) {
                System.out.print(" ");
            }
            for (int j = 1; j <= i; j++) {
                System.out.print(" *");
            }
            for (int j = 5; j >= i; j--) {
                System.out.print(" ");
            }
            System.out.println();
        }
    }
}

二、学习总结
1、使用static声明的属性和方法可以由类名称直接调用,static属性是所有地下共享的,所有对象都可以对其进行操作。

2、在Java中使用this关键字可以表示当前的对象,通过this属性可以调用本类中的属性,通过this方法()可以调用本类中 的其他方法,也可以通过this()的形式调用本类中 的构造方法,但是调用时要求放在构造方法的首行。

3、在Java中使用this关键字可以表示当前的对象,通过this属性可以调用本类中的属性,通过this方法()可以调用本类中 的其他方法,也可以通过this()的形式调用本类中 的构造方法,但是调用时要求放在构造方法的首行。String类在Java中较为特殊,String可以使用直接赋值的方式,也可以通过构造方法进行实例化,前者只产生一个实例化对象,而且此实例化对象可以重用,后者将产生两个实例化对象,其中一个是垃圾空间,在String中比较雷人实验equals方法,而“==”比较的只是两个字符串的地址值,字符串的内容一旦声明则不可改变。