撰写第三周课程总结及实验报告(一)

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

代码

   public  class  Shuixianhua{
   public static void main(String[]args) {
	   int a,b,c;
	   for(int i=100;i<1000;i++)
	   {
		   a=i/100;
		   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);
		   }
	   }
   }
   }

遇到的问题:math没大写,导致编译不通过

解决方法:百度了一下java math的用法,要大写Math

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

代码:

package hello.java;

public class heyong {


	  public static void main(String args[]){
	     int sum=0,a=13;
	  for(int i=1;i<=100;i++)
	{
	   sum=sum+a;
	  a=Math.abs(a)+10;
	if(i%2==0)
	{
	   a=a;
	}
	else 
	{
	a=-a;
	}
	}
	  System.out.println(sum);
	  }
}

遇到的问题:答案错误,循环开始第一个数为23,此时i=1,if语句必须要让它变为负的,开始我把它搞成正的了,很烦。

解决方法:再细细读了下循环

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

代码:

package hello.java;

public class xiaohe {

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

}

这个题目不难

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

代码:

package hello.java;


 public class heyong {

 public static void main(String[] args) {
        int a=8,sum=0; 

    for(int i=1;i<=10;i++)
     {
       sum=a+sum;
	   a=(a*10)+8;          
    	          }
    	          System.out.println(sum);
    	       }
    	   }

这题分分钟

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

代码:

package hello.java;
public class xiaohe {

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

这题其实还好,以前c语言记过这个题目,还稳得住

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

代码:

package hello.java;

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

遇到的问题:开始不知道循环结束条件,总编译错误

解决方法:看了下别人的代码,搞清楚了循环条件,和输出结果

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

代码:

package hello.java;
public class xiaohe {

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 k=1;k<=i;k++)
		{
			System.out.print("* ");
		}
		System.out.println();
	  }
     }

     }

遇到的问题:编译错误,答案错误

解决方法:编译错误是因为我忘记符号汉字类输出要打双引号,解决答案错误我看了下网上的代码,发现打印符号汉字在java中也要用print而不是println

第三周java总结

构造方法
类名称 对象名称=new 类名称 ()

构造方法的名称必须与类名称一致;
构造方法的声明处不能有任何返回值类型的声明;
不能在构造方法中使用return 返回一个值。

this调用本类构造方法必须放在首行,不能循环

this+成员变量有四个作用
1.强调调用本类方法
2.表示类的成员属性
3.调用构造方法
4.表示当前对象

当前对象指的是正在调用的对象

static声明属性,将静态属性共享为公共属性

java中常用的内存区域
1.栈内存空间:保留所有的对象名称(准确说是保留了堆内存空间的地址)
2.堆内存空间:保留每个对象的具体属性内容
3.全局数据区:保留static的属性
4.全局代码区:保留所有方法定义

static方法定义的说明
1.本类没有提供有普通属性,这样产生实例化对象没有意义;
2.本类无法直接进行对象实例化,只能够利用static操作;

说明:非static声明的方法可以去调用static声明的属性或方法,但static声明的方法不能调用非static类型声明的属性或方法。
static类型的方法在对象未被实例化时就可以被类名所调用。

原文地址:https://www.cnblogs.com/1793979463hyx/p/11519564.html