【Java作业】2017.10.14/10.15

本文通过三个实战案例介绍Java编程技巧:1. 创建一个工具类实现数组操作;2. 设计英雄类及其子类,演示继承与多态;3. 开发猜数小游戏,提升交互体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作业一

/*
定义一个工具类
其中提供了对于整形数组和double类型数组的一些工具方法。

方法分别有:

1.求数组值的和.
2.求数组中的最大值
3.对数组进行升序排序.
4.对数组进行倒序排序(也就是反转数组)

工具类要求:
a.私有化构造方法
b.不希望被继承
*/
import java.util.Arrays;

public class Homework1{
	public static void main(String[] args){
		int [] arr=new int [] {31,14,86,96,47};
		System.out.println("该数组的和="+Array.getSum(arr));
		System.out.println("该数组中的最大值="+Array.getMax(arr));
		Array.sortUp(arr);  //调用工具类中的升序方法
		System.out.println("升序排列="+Arrays.toString(arr));//将数组以字符串形式输出
		Array.sortReverse(arr);
		System.out.println("反转数组="+Arrays.toString(arr));
		
		double [] arr1=new double [] {67.3,14.5,6.9,33.3,23.0};
		System.out.println("该数组的和="+Array.getSum(arr1));
		System.out.println("该数组中的最大值="+Array.getMax(arr1));
		Array.sortUp(arr1);  //调用工具类中的升序方法
		System.out.println("升序排列="+Arrays.toString(arr1));//将数组以字符串形式输出
		Array.sortReverse(arr1);
		System.out.println("反转数组="+Arrays.toString(arr1));
	}
}

final class Array{
	//私有化此类
	private Array(){

	}
	//数组求和
	static int getSum(int [] arr){
		int sum=0;
		for(int i=0;i<arr.length;i++){
			sum+=arr[i];
		}
		return sum;
	}
	
	static double getSum(double [] arr){
		double sum=0.0;
		for(int i=0;i<arr.length;i++){
			sum+=arr[i];
		}
		return sum;
	}
	
	//求数组中最大值
	static int getMax(int [] arr){
		for(int i=0;i<arr.length;i++){
			for(int j=i+1;j<arr.length;j++){
				if(arr[j]>arr[i]){
					int temp=arr[j];
					arr[j]=arr[i];
					arr[i]=temp;
				}
			}
		}
		return arr[0];
	}
	
	static double getMax(double [] arr){
		for(int i=0;i<arr.length;i++){
			for(int j=i+1;j<arr.length;j++){
				if(arr[j]>arr[i]){
					double temp=arr[j];
					arr[j]=arr[i];
					arr[i]=temp;
				}
			}
		}
		return arr[0];
	}
	
	//升序排列
	static void sortUp(int [] arr){
		for(int i=0;i<arr.length-1;i++){
			for(int j=i+1;j<arr.length;j++){
				if(arr[i]>arr[j]){
					int temp=arr[i];
					arr[i]=arr[j];
					arr[j]=temp;
				}
			}
		}
	}
	
	static void sortUp(double [] arr){
		for(int i=0;i<arr.length-1;i++){
			for(int j=i+1;j<arr.length;j++){
				if(arr[i]>arr[j]){
					double temp=arr[i];
					arr[i]=arr[j];
					arr[j]=temp;
				}
			}
		}
	}
	
	//倒序排列(反转数组)
	static void sortReverse(int [] arr){
		for(int i=0;i<=(arr.length/2);i++){
			int temp=arr[i];
			arr[i]=arr[arr.length-i-1];
			arr[arr.length-i-1]=temp;
		}
	}
	
	static void sortReverse(double [] arr){
		for(int i=0;i<=(arr.length/2);i++){
			double temp=arr[i];
			arr[i]=arr[arr.length-i-1];
			arr[arr.length-i-1]=temp;
		}
	}
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
}










作业二


/*
   a.定义一个英雄类  Hero
   属性:(全部私有,提供公共方法让外部访问)
        年龄, 血量 ,攻击力,防御力
   方法:
        释放技能,加血.
		
   必须至少包含一个构造方法,且该构造方法可以初始化所有四个成员变量   
   
   b.定义一个类BatMan继承Hero类 
   方法:
        飞行(方法中输出一行打印"飞行")
		
		
   c.定义一个SuperBatMan类继承 BatMan类
   方法:
        重写飞行方法(方法中输出一行打印"超级飞行")
		
   最终分别创建BatMan对象和SuperBatMan对象,并调用飞行方法.
*/

public class Homework2{
	public static void main(String[] args){
		BatMan batman=new BatMan();
		SuperBatMan superbatman=new SuperBatMan();
		
		batman.fly();
		superbatman.fly();
	}
}

class Hero{
	private int age;     //年龄
	private int hp;      //血量
	private int atk;     //攻击力
	private int def;     //抗性
	
	//初始化变量:提供公共方法供外界访问
	void setAge(int age){
		this.age=age;
	}
	int getAge(){
		return this.age;
	}
	void setHp(int hp){
		this.hp=hp;
	}
	int getHp(){
		return this.hp;
	}
	void setAtk(int atk){
		this.atk=atk;
	}
	int getAtk(){
		return this.atk;
	}
	void setDef(int def){
		this.def=def;
	}
	int getDef(int def){
		return this.def;
	}
	
	/*
		Hero(){
		父类无参构造
	    }
	*/
	
	//父类有参构造:初始化成员变量方法
	Hero(int age,int hp,int atk,int def){
		this.age=age;
		this.hp=hp;
		this.atk=atk;
		this.def=def;
	}
	
	void skill(){
		System.out.println("使用技能");
	}
	
	void addHp(){
		hp=this.hp+33;
		System.out.println("血量增加"+33);
	}
	
}

class BatMan extends Hero{

	//调用父类有参构造方法
	BatMan(){
		super(1,1,1,1);
	}
	
	void fly(){
		System.out.println("i can fly...hahaaa");
	}
}

class SuperBatMan extends BatMan{
	void fly(){
		System.out.println("i can superfly.../摊手");
	}
}












作业三


/*
实现一个猜数的小游戏.
随机产生一个数(a)。
Scanner 的方式来输入一个数字,并提供反馈,告诉用户该输入的值比a大还是比a小,直到最终用户猜中,显示结果.
*/

import java.util.*;

public class Homework3{
	public static void main(String[] args){
			Random random=new Random();	
			int randomNum=random.nextInt(11);			//产生0-10的随机数
			System.out.println("请输入您所猜的数字(0-10的整数):");
			Scanner sc=new Scanner(System.in);       
			int guess=sc.nextInt();                  //获取用户键盘输入的数字
			
			while(guess != randomNum){
				if(guess<0 || guess>10){
					System.out.println("您输入的数字不合法,请重新输入:");
				}
				else if(guess > randomNum){
					System.out.println("您猜的数字大了,请重新输入:");
					System.out.println("----------------------------");
				}
				else{
					System.out.println("您猜的数字小了,请重新输入:");
					System.out.println("----------------------------");
				}
					
					guess = sc.nextInt();
			}
			System.out.println("恭喜,您猜对了!");
	}
}


1.编写MyDate.java 2.有如下构造方法 2.1 无参数构造方法public MyDate(),以当前的系统时间构造MyDate对象 2.2 public MyDate(int year, int month, int day), 以指定的年月日构造MyDate对象 3.有如下属性 3.1 private int year ;//年 3.2 private int month; //月 3.3 private int day; //日 4.有如下方法 4.1 public String after(int day); //返回当前对象代表的日期之后day天的日期,比如当前对象是2008-8-8,调用after(5)以后,应该返回2008-8-13,格式可自定义 4.2 public String before(int day); //返回当前对象代表的日期之前day天的日期,比如当前对象是2008-8-8,调用before(5)以后,应该返回2008-8-3,格式可自定义 4.3 public void setYear(int year); //设置年为指定值year 4.4 public void setMonth(int month); //设置月为指定值month 4.5 public void setDay(int day); //设置日为指定值day 4.6 public int getYear(); //返回当前对象的年 4.7 public int getMonth(); //返回当前对象的月 4.8 public int getDay(); //返回当前对象的日 4.9 public void set (int year, int month, int day); //设置年、月、日为指定的值year、month、day 4.10 public String toString();//以字符串形式返回当前对象的年月日,例如2008年08月08日,格式可自定义 4.11 public boolean equals(MyDate mydate);//当前对象与另一个对象比较,如果两个对象的年月日均相等,则返回true,反之返回false 5.编写TestMyDate.java,在main方法中对MyDate的各个方法进行测试 6.按照编程规范为MyDate.java编写规范的代码 7.按照java doc API的要求,对代码编写规范的注释,然后利用javadoc.exe命令生成MyDate.java的API doc 8.撰写上机报告
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值