java小作业(七)

1.请编写一个类其名字为ShuXue类,其中有这样几个方法第一个为求平均数,第二个为求最大数,第三个为求中间数,然后编写一个子类继承ShuXue类并且重写父类中的第一个方法使其得到的结果精度保留为小数点后的两位,最终在测试类中进行测试

package com.sj.homework;
/**
 * @desc	请编写一个类其名字为ShuXue类,其中有这样几个方法第一个为求平均数,第二个为求最大数,第三个为求中间数,
 * 			然后编写一个子类继承ShuXue类并且重写父类中的第一个方法使其得到的结果精度保留为小数点后的两位,
 * 			最终在测试类中进行测试
 * @author  ws
 * @time	7.31
 */
public class ShuXue {

	public void avg(double a,double b){//平均数
		double c=(a+b)/2;
		System.out.println(c);
	}
	public void max(double a,double b){//最大数
		double c ;
		if (a>=b) {
			c=a;
		} else {
			c=b;
		}
		System.out.println(c);
	}
	public static void mid() {//中间数
		char[] arr = {1,2,3,4,5,7};//创建数组arr
		for (int i = 0; i < arr.length; i++) {//获取arr数组中每一个元素的值
			if (i==0) {//让结果只执行一次
				if (arr.length%2==1) {//arr数组长度为奇数,中间数是最中间的那个数
					int j = (arr.length+1)/2-1;//中间数的索引
					System.out.println("中间数是:"+arr[j]);//输出
				} else {//arr数组长度为偶数,中间数是中间两个数的平均值
					int m = (arr.length/2)-1;//索引
					int n = arr.length/2;//索引
					System.out.println("中间数:"+(double)(arr[m]+arr[n])/2);;//输出
				}
			}
		}
	}

}
package com.sj.homework;

public class ShuXueZi extends ShuXue{

	public void avg(double a,double b){//平均数的修改
		double c=(a+b)/2;//商数c
		double d = c*100;//乘以100
		int e=(int) d;//取整
		if (d-e>=0.5) {//四舍五入
			e++;
		}
		float f = e/100f;//除以100,获得保留两位小数的值
		System.out.println(f);
	}
}
package com.sj.homework;
/**
 * @desc	请编写一个类其名字为ShuXue类,其中有这样几个方法第一个为求平均数,第二个为求最大数,第三个为求中间数,
 * 			然后编写一个子类继承ShuXue类并且重写父类中的第一个方法使其得到的结果精度保留为小数点后的两位,
 * 			最终在测试类中进行测试
 * @author  ws
 * @time	7.31
 */
public class Test02 {
	public static void main(String[] args) {

		ShuXue sx=new ShuXue();//父类sx
		ShuXueZi sxz = new ShuXueZi();//子类sxz
		
		sx.avg(1, 3.33);//父类平均数
		sxz.avg(1, 3.33);//子类平均数
		sxz.max(1, 8);//最大数
		sxz.mid();//中间数
		
	}

	

}

2.请自己举一个多态的例子,并用代码进行实现

package com.sj.dt;
/**
 * @desc	端口
 * @author  ws
 * @time	7.31
 */
public interface ISanGuo {

	public void say();
}
package com.sj.dt;
/**
 * @desc	实现类
 * @author  ws
 * @time	7.31
 */
public class SanGuoImpl implements ISanGuo {

	@Override
	public void say() {
		System.out.println("这是三国");
	}

}
package com.sj.dt;

public class CaoCao extends SanGuoImpl{

	@Override
	public void say() {
		super.say();
		System.out.println("我是曹操");
	}
	
	
}
package com.sj.dt;

public class LiuBei extends SanGuoImpl{

	@Override
	public void say() {
//		super.say();
		System.out.println("我是刘备");
	}

}
package com.sj.dt;

public class SunQuan extends SanGuoImpl{

	@Override
	public void say() {
//		super.say();
		System.out.println("我是孙权");
	}

}
package com.sj.dt;
/**
 * @desc	多态例子测试类
 * @author  ws
 * @time	7.31
 */
public class Test {

	public static void main(String[] args){
		ISanGuo [] sanguo = new SanGuoImpl[3];
		//通过逐个赋值的方式向当前数组中存放对象值
		sanguo[0] = new CaoCao();
		sanguo[1] = new LiuBei();
		sanguo[2] = new SunQuan();
		
		for (int i = 0; i < sanguo.length; i++) {
			sanguo[i].say();
		}
	}
	
	
}

3.利用封装实现球一行字符串对应的ASCII的和,并最终在测试类中进行测试

package com.sj.homework;
/**
 * @desc	3.利用封装实现球一行字符串对应的ASCII的和,并最终在测试类中进行测试
 */
public class AscImpl {
	public static void ascSum(String str) {
		char [] arr = str.toCharArray();//字符串转成数组类型
		int sum =0;//创建ASCII的和的变量
		for (int i = 0; i < arr.length; i++) {//获取每个元素
			System.out.print(arr[i]+0+"\t");//查看值
			sum+=arr[i]+0;//给sum加值
		}
		System.out.println("\nASCII的和为:"+sum);//输出
	}
}
package com.sj.homework;

import java.util.Scanner;

/**
 * @desc	3.利用封装实现球一行字符串对应的ASCII的和,并最终在测试类中进行测试
 * @author  ws
 * @time	7.31
 */
public class Asc {
	public static void main(String[] args) {
		
		//输入
		Scanner cin = new Scanner(System.in);
		System.out.print("请输入:");
		String str = cin.nextLine();
		//输出
		AscImpl asc=new AscImpl();
		asc.ascSum(str);
	}

}

4.利用类的继承的的方式,请编写一个父类,且父类中的方法自拟,然后子类继承父类,最终在测试类中进行测试,且将结果输出出来

package com.sj.homework;

public class Father {

	public void run() {
		System.out.println("这是父类中的方法。");
	}
}
package com.sj.homework;

public class Son extends  Father{

	//shift+alt+s:...implement...	调用父类方法的操作
	@Override
	public void run() {
		System.out.println("这是子类中的方法。");
		super.run();//调用父类中的run方法
	}
}
package com.sj.homework;
/**
 * @desc	利用类的继承的的方式,请编写一个父类,且父类中的方法自拟,然后子类继承父类,最终在测试类中进行测试,且将结果输出出来
 * @author  ws
 * @time	7.31
 */
public class Test {
	public static void main(String[] args) {

		Son sn=new Son();//初始化
		sn.run();//输出
	}
}

5.利用代码重构的手段实现对“发红包这个游戏”的封装

package com.sj.bd;

import java.util.Scanner;

/**
 * @desc	红包游戏
 * @author	ws
 * @time	7.25
 *
 */
public class Red {
	
	public static void faRed(double c) {
		if (c<0.01) {
			System.out.println("发送失败,您也太抠了吧!");
		} else {
			System.out.println("发送成功!\n");
			System.out.print("输入1开始抢红包,输入其他退出:");
		}
	}
	
	public static void qiangRed(double c, int num) {
		if (num==1) {
			//保留两位小数的字符转换,小数点后两位的钱都被马化腾抢走了
			double d = c*100;
			int e = (int) d;
			if (d-e>=0.5) {//四舍五入
				e++;
			}
			float f = e/100f;
			System.out.println("恭喜你!获得"+f+"元!\n");
		} else {
			System.out.println("您已退出");
		}
	}

}
package com.sj.bd;

import java.util.Scanner;

public class Test2 {
	public static void main(String[] args) {
		double a,b,c;
		int num;
		
		Scanner cin = new Scanner(System.in);
		Red red = new Red();
		
		//发红包
		System.out.print("请输入要发红包的金额:");
		a=cin.nextDouble();
		System.out.print("请输入要发红包的个数:");
		b=cin.nextDouble();
		c=a/b;//人均红包
		red.faRed(c);//发红包
		
		//抢红包
		num = cin.nextInt();
		red.qiangRed(c, num);//抢红包
	}

	

}

猜你喜欢

转载自blog.csdn.net/qq_40923411/article/details/81320698