JAVA-实验二-JAVA语法与面向对象基本概念实验

一、实验目的:

对JAVA语法与面向对象基本概念相关知识进行练习。

二、实验内容:

1.在控制台上,打印输出一个实心菱形。

2.尝试编写一个类,定义一个修饰权限为private的成员变量,并定义两个成员方法,一个成员方法实现为此成员变量赋值,另一个方法获取这个成员变量的值,保证其它类继承该类时能获取该类成员变量的值。

3.尝试编写一个矩形类,将长与宽作为矩形类的属性,在构造方法中将长,宽初始化,定义成员方法求此矩形的周长与面积。

4.分别用for和while循环实现8+88+888+…+8888888888。

5.两位整数对调后,形成的另外一个整数成为对调数(56与65),是否存在一个两位整数加另外一个整数的和,等于他们的对调数之和,比如(36+96=63+69),输出所有满足这样关系的等式。

三、实验代码:

第一题:

package edu.hubu;
public class Project1 {
	public static void main(String[] args) {
		//函数功能:传参
		Print(7);
	}
	
	public static void Print(int n) {
		//函数功能:输出n行的菱形
		int i;
		if(n<1) {
			System.out.print("菱形层数需为正数(≥1)");
			return ;
		}
		//先打印上三角 i<=(n+1)/2
		for(i=0;i<(n+1)/2;i++) {
			//先打印左半段空格
			for(int j=(n-1)/2-i;j>0;j=j-1) 
				System.out.print(' ');
			//打印中间的*
			for(int k=0;k<2*i+1;k++) 
				System.out.print('*');
			//打印右半段空格
			for(int j=(n-1)/2-i;j>0;j--) 
				System.out.print(' ');
			System.out.print('\n');
		}
		
		//再打印下三角 i<=(n-3)/2
		for(i=0;i<=(n-3)/2;i++) {
			//先打印左半段空格
			for(int j=0; j<=i; j++) 
				System.out.print(' ');
			//打印中间的*
			for(int k=0;k<n-2*(i+1);k++) 
				System.out.print('*');
			//打印右半段空格
			for(int j=0; j<=i; j++) 
				System.out.print(' ');
			System.out.print('\n');
		}
	}
}

第二题:

package edu.hubu;
public class Project2 {
	//定义一个修饰权限为private的成员变量a
	private int a;
	public Project2(int a) {
		this.a=a;
	}
	
	//成员方法1:实现为此成员变量赋值
	public void SetValue(int a) {
		this.a=a;
	}
	
	//成员方法2:获取此成员变量的值
	public int GetValue() {
		return a;
	}
}

package edu.hubu;
//test通过关键字extends继承父类Project2
class test extends Project2{
	//调用父类的构造方法
	public test(int a) {
		super(a);
	}
	
	public static void main(String[] args) {
		//新建test类型数据t
		test t =new test(99);
		System.out.print("通过父类方法,子类获得变量t值为:"+t.GetValue());
		System.out.print("\n");
		t.SetValue(100);
		System.out.print("通过父类方法,子类为变量t重新赋值为:"+t.GetValue());
	}
}

第三题:

package edu.hubu;
public class Project4_Rectangle {
	public static void main(String[] args) {
		//构建无参类对象r1
		Rectangle r1 = new Rectangle();
		System.out.print("无参矩形的周长为"+r1.GetPerimeter()+"\n");
		System.out.print("无参矩形的面积为"+r1.GetArea()+"\n");
		//构建传递参数类对象r2
		Rectangle r2 = new Rectangle(10,8);
		System.out.print("长为10 宽为8的矩形周长为"+r2.GetPerimeter()+"\n");
		System.out.print("长为10 宽为8的矩形面积为"+r2.GetArea()+"\n");
	}
}

//建立Rectangle类
class Rectangle{
	private double length;
	private double width;
	public Rectangle() {
		//默认构造函数
		length=15;
		width=10;
	}
	public Rectangle(double length,double width) {
		//传参构造函数
		this.length=length;
		this.width=width;
	}
	public double GetArea() {
		//定义成员方法求矩形面积
		return width*length;
	}
	public double GetPerimeter() {
		//定义成员方法求矩形周长
		return 2*(width+length);
	}
}

第四题:

package edu.hubu;
public class Project4 {
	public static void main(String[] args) {
		//用for循环实现8+88+888+…+888 888 8888  1~10位
		String a = "8";
		String b=a;
		long sum =0;
		for(int i=1;i<=10;i++) {
			//将字符串b转换成long类型
			//累加求和至sum
			sum=sum+Long.parseLong(b);
			//每次循环在b末尾拼接一个a
			b=b+a;
		}
		System.out.print("for循环:"+"\n"+"8+88+888+…+888 888 8888="+sum+"\n");

		//用while循环实现8+88+888+…+8888888888
		String a2 = "8";
		String b2=a2;
		long sum2 =0;
		int i=1;
		while(i<=10) {
			sum2 = sum2 + Long.parseLong(b2);
			b2 = b2 + a2;
			i++;
		}
		System.out.print("\n"+"while循环:"+"\n"+"8+88+888+…+888 888 8888="+sum2);
	}
}

第五题:

package edu.hubu;

public class Project5 {
	public static void main(String[] args) {
		// 输出满足“一个两位整数加另外一个整数的和等于他们的对调数之和
“这样关系的等式
		for(int i=10;i<100;i++) {
			for(int j=10;j<100;j++) {
				int i1 = i/10;//i的十位数字
				int i2 = i%10;//i的个位数字
				int a = 10*i2 + i1;//i的对调数
				
				int j1 = j/10;//j的十位数字
				int j2 = j%10;//i的个位数字
				int b = 10*j2 + j1;//j的对调数
			
				if(i+j==a+b)
					System.out.print(i+"+"+j+"="+a+"+"+b+"\n");
			}
		}
	}
}

四、实验结果:

第一题:

第二题

第三题:

第四题:

第五题:

因输出的关系式数量太多,此处只展示开头与末尾部分

开头部分:

末尾部分:

五、实验小结:

此次实验我一共完成了五道题的java编程实现,都能较为准确地实现题目要求的功能,在编程中我也学到了很多新的知识。

对于第一题打印实心菱形问题,我使用main函数进行传参,使用Print函数实现打印实心菱形的功能。在Print()函数中,我将菱形分为上三角于下三角两部分分别进行操作,对于每部分分为左半段空格、中间三角*、右半段空格三部分进行打印,利用for循环结构控制打印从参数,成功实现对应功能。

对于第二题类继承问题,我定义了Project2与test这两个类,其中test继承父类Project2。在Project2类中定义了一个修饰权限为private的成员变量a,并定义了两个成员方法GetValue()和SetValue(),分别实现变量赋值与获取变量名的功能。在test类中新建test类型数据t,调用父类方法GetValue()获得变量t的值,调用父类方法SetValue()为变量t重新赋值,成功实现对应功能。

对于第三题矩形类问题,我建立了Rectangle类,在Rectangle类分别定义了成员变量length与width,分别定义了默认构造函数与传参构造函数,分别定类了两个成员方法GetArea()和GetPerimeter(),实现求矩阵面积与周长的功能。我在main()函数中分别构建了无参类对象r1与传参类对象r2,调用Rectangle类中的成员方法GetArea()和GetPerimeter(),成功输出矩形周长与面积,实现了对应功能。

对于第四题循环问题,我先设置了字符串类型变量a的值为“8”,通过字符串拼接得到“88”“888”…等字符,再利用类型转换函数Long.parseLong()将String类型数据转换成long类型,建立int类型变量sum实现数据累加求和,最终成功得到8+88+888+…+8888888888的求和结果,成功实现对应功能。

对于第五题对调数问题,我先在外层设置了两个for循环,用来控制变量i与j的值,之后分别对其求得个位数字与十位数字,即可得到i与j的对调数设为a与b,再使用if语句判断是否满足等式,满足条件则输出,成功实现对应功能。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值