9/8-9/14 java学习总结(课堂及课后学习总结)

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

 

public class one{
    public static void main (String args[]){
    int x,y,z;
        for(int i=100; i<=999;i++){
            z=i%10;
            y=(i%100)/10;
            x=i/100;
            if(Math.pow(x,3)+Math.pow(y,3)+Math.pow(z,3) == i){
                System.out.println(i);
            }       
        }
    }
}

 

 

 

 

 

 思路:先将各位数字,十位数字和百位数字分别求出来并赋值给xyz,然后用一个if循环找出符合要求(各位数字立方和等于该数本身)的数并输出。

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

 

import java.util.Scanner;
public class two
{
    public static void main(String[] args) {
     int i=13,j=-23,sum=0;
     while(i<=1003) {
            sum=sum+i+j;
            i+=20;
            j-=20;
        }
        System.out.println(sum);
    }
}

 

 

 思路:有两种思路,一种是每次变化10并用一个i*=-1来运算,我是将整个过程分为正数和负数分别来计算,然后全部加起来。代码行数会稍微多一点,但是感觉看起来更快。

 

三,编程求1!+2!+3!+…+20!。

 

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

 

 

 

 

 思路:这题没啥好说的,就是通过for循环将每个数的阶乘求出来加在一起啊。

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

 

public class four{
    public static void main (String args[]) {
          long sum=0,m=8;
          for(int i=1;i<=10;i++) {
              sum=sum+m;
              m=m * 10+8; 
              }
             System.out.println(sum);
       }
}

 

思路:还是没什么好说的,通过for循环将1位数的值加到10位数的值就o98k了。

 

 

 

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

 

public class five{
    public static void main (String args[]) {
        int i,j;
        for(i=2;i<=1000;i++) {
            int sum=0;
            for(j=1;j<i;j++) {
                if(i%j==0)
                    sum+=j;
            }
            if(sum==i)
                System.out.println(i);
        }
    }
}

 

 

 从1开始把每个数都计算一下,第一个for循环控制最大到1000,第二个for循环+if语句把所有因子都找出来,挑出那些恰好等于它的因子之和的数进行输出。

 

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

 

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

 

 

 

 

 这题也就是一个用for语句循环求和的,没什么好说的,和前面的差不多,然后i=i-1就是因为最后一次循环会超过8888然后再进行一次判断for循环不能执行,所以要-1保证是总和小于8888的最大值

七,使用for循环打印下面的图形。

 

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

 

 

 

 第一个for循环控制每行打印,第二个for循环控制每行符号输出的位置,第三个for循环控制每行输出符号的个数,然后控制行数为5行,然后输出就得到了三角形。

 

 

总结

这次作业总体不难,虽然说出现了一些粗心(什么-打成+,少了分号之类的)就不一一列举了,然后第三题的定义数据类型不用int而用long需要注意一下,int限制了长度,还有第六题i-1需要注意一下就没别的问题。

 

 

 

this的用处

1.作为对象的方法(强调本类)。

2.作为普通函数中表示类中的属性。

 

3.作为构造函数调用(使用this调用本类的构造方法)

4.表示当前对象

 

java主要的内存空间


1.全局代码区:保存所有的方法定义

2.全局数据区:保存static类型的属性

2.堆内存空间:保存了每个对象的具体属性内容

4.栈内存空间:保存所有的对象名称(保存了引用堆内存空间的地址).

 

static关键词

static方法就是没有this的方法。在static方法内部不能调用非静态方法。

在没有创建任何对象的前提下,可以仅仅通过类本身来调用static方法。

 

posted @ 2019-09-15 22:09  awq  阅读(265)  评论(0编辑  收藏  举报