实验报告
一、实验目的
熟悉JDK开发环境
熟练掌握结构化程序设计方法
二、实验内容
1.打印输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其中各位数字立方和等于该数本身。例如,153是一个“水仙花数”。
2. 编写Java程序,求13-23+33-43+…+973-983+993-1003的值。
3. 编程求1!+2!+3!+…+20!。
4. 编写Java程序,计算8+88+888+…前10项之和。
5. 一个数如果恰好等于它的因子之和,这个数就称为完数。编写程序输出1000以内的所有完数。
6. 编写应用程序,输出满足1+2+3+…+n<8888的最大正整数。
7. 使用for循环打印下面的图(等腰三角形)
三、实验过程
1.打印输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其中各位数字立方和等于该数本身。例如,153是一个“水仙花数”。
实验源码:
package test;
public class Domo1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i,sum=0,j,k;
for(i=100;i<1000;i++)
{
k=i;
while(k>0)
{
j=k%10;
sum=sum+j*j*j;
k=k/10;
}
if(sum==i)
System.out.println(i);
sum=0;
}
}
}
实验结果:
2.编写Java程序,求13-23+33-43+…+973-983+993-1003的值。
实验源码:
package test;
public class Domo2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int sum=0;
int i,flag=1;
for(i=13;i<=1003;i+=10)//for循环没设置好,想得太复杂
{
sum=sum+flag*i;
flag=-flag;
}
System.out.print(sum);
}
}
实验结果:
3. 编程求1!+2!+3!+…+20!。
实验源码:
package test;
public class Domo3 {
public static void main(String[] args) {
long i,j,sum1=1,sum2=0;
for(i=1;i<=20;i++)
{
for(j=1;j<=i;j++)
sum1=sum1*j;
sum2+=sum1;
sum1=1;
}
System.out.print(sum2);
}
}
实验结果:
4. 编写Java程序,计算8+88+888+…前10项之和。
实验源码:
package test;
public class Domo4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
long i,sum=0;//计算结果int的范围
long a=8;//第十项超过int的范围
for(i=1;i<=10;i++)
{
sum+=a;
a=a*10+8;
}
System.out.print(sum);
}
}
实验结果:
5. 一个数如果恰好等于它的因子之和,这个数就称为完数。编写程序输出1000以内的所有完数。
实验源码:
package test;
public class Domo5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i,j,sum=0;
for(i=1;i<=1000;i++)
{
for(j=1;j<=i/2;j++)
{
if(i%j==0)
sum=sum+j;
}
if(sum==i)
System.out.println(sum);
sum=0;
}
}
}
实验结果:
6. 编写应用程序,输出满足1+2+3+…+n<8888的最大正整数。
实验源码:
package test;
public class Domo6 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int sum=0,i;
for(i=1;sum+i<8888;i++)
{
sum=sum+i;
}
System.out.print("最大正整数n是:"+(i-1));//i-1是因为在sum+i大于8888时跳出循环,因此i-1;sum+i才会小于8888
}
}
实验结果:
7. 使用for循环打印下面的图(等腰三角形)
实验源码:
package test;
public class Domo7 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i,j;
for(i=1;i<=5;i++)
{
for(j=5-i;j>0;j--)
System.out.print(" ");
for(j=1;j<=i;j++)
System.out.print("* ");
System.out.print("
");
}
}
}
实验结果:
总结:这几个题挺简单的,但是我还是犯了些小错误,例如计算的数据超出了类型的取值范围,希望下次能更好的完成实验。
课程总结
类:类是由属性和方法组成的,一个属性就是一个变量,方法是一些操作的行为。
类的定义
class 类名称{
数据类型属性;
·······
public 返回值的数据类型 方法名称(参数1,参数2···){
程序语句;
[return 表达式;]
}
}
类的定义没有加上“static”关键字,因为此时的定义方法将要由对象调用,而不是与主方法定义在一个类中且由主方法直接调用。
对象的创建
类名 对象名称=new 类名();
如果一个对象要被使用,对象必须被实例化。
封装性
private 属性类型 素性名称
private 方法返回值 方法名称(参数列表){}
只要是被封装的属性,必须通过setter和getter方法设置和取得。
private声明的属性或方法只能在其类的内部调用。
如果要强调是本类中的方法,可以在调用的时候按“this.方法名称()"。
构造方法
class 类名称{
访问权限 类名称(类型1 参数1,类型2 参数2,·····){
程序语句;
}
}
构造方法的名称必须与类名称一致;
构造方法的声明处不能有任何返回值类型的声明;
不能在构造方法中使用return返回一个值。
匿名对象
匿名对面指没有给出名字的对象。一般匿名对象只使用一次,而且匿名对象只在堆内存中开辟空间,而不存在栈内存的引用。
使用static声明属性
在程序中使用static声明属性,此属性称为全局变量,对所有的对象是共享的。
使用static声明方法
使用static声明的方法可以直接由类名称直接调用。
注:非static声明的方法可以去调用static声明的属性或方法,但是static声明的方法是不能调用非static类型声明的属性或方法的。