习题-2

一.

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

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

工具类要求:
a.私有化构造方法
b.不希望被继承

package homework;
import java.util.*;
public class MathUtil1 {
	//私有化构造方法
	private MathUtil1(){
		
	}
	
	//方法用static进行修饰,可以通过类名直接访问
	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;
		for(int i=0;i<arr.length;i++){
			sum += arr[i];
		}
		return sum;
	}
	
//求最大值	
	static int getMaxNum(int [] arr){
		int max = arr[0];
		System.out.println("数组arr中包含的元素: ");
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]+" ");
			if(arr[i]>max){			//判断最大值
				max = arr[i];
			}
		}
		System.out.println();
		return max;	
	}
	
//对数组进行升序排序	
	static void sort(int arr[]){
		Arrays.sort(arr);			//直接调用Arrays类中的sort()方法进行升序排序
		System.out.print("数组升序排序的结果是:");
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]+" ");		
		}	
		//System.out.println("max: "+arr[arr.length-1]);//先排序,然后输出数组中最大值
		System.out.println();
	}
	
	/*
	static int[] getAscendOrder(int [] arr){
		int temp = 0;
		for(int i=0;i<arr.length;i++){
			for(int j=i+1;j<arr.length;j++){
				if(arr[i]>arr[j]){
					temp = arr[j];
					arr[j] = arr[i];
					arr[i] = temp;
				}
			}
		}
		System.out.println("升序排序后的数组为: ");
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]+" ");
		}
		return arr;
	}
	*/
	
	//反转数组
	/*反转排序:
	 排序原理:将第一个元素与最后一个元素调换位置,第二个元素和倒数第二个元素调换位置,
	 然后依次类推,直到将所有的数组元素都调换位置。反转排序不会按升序或者降序排序。反
	 转排序是对数组两边的元素进行替换,所有只需循环数组长度的半数次数。 
	 */
	
	static void reverseArray(int [] arr){
		System.out.print("数组中原来的内容升序排列是: ");
		Arrays.sort(arr);	
		showArray(arr);
		int temp;
		int len =arr.length;
		for(int i=0;i<len/2;i++){
			temp = arr[i];
			arr[i] = arr[len-1-i];
			arr[len-1-i] = temp;
		}
		System.out.print("数组反转后内容:");
		showArray(arr);
	}
	
	
	static void showArray(int[] arr){
		for(int i:arr){
			System.out.print(" "+i);
		}
		System.out.println();
	}
	
	
	public static void main(String[] args){
		new UserTest().getResult();
	}
}	


class UserTest{
	void getResult(){
		int [] arr = new int[]{2,1,5,4,3};
		System.out.println("数组中的元素之和为:"+MathUtil1.getSum(arr));
		System.out.println("数组中的最大元素是:"+MathUtil1.getMaxNum(arr));
		MathUtil1.sort(arr);
		//System.out.println(Arrays.toString(arr));
		//MathUtil1.getAscendOrder(arr);
		MathUtil1.reverseArray(arr);
	}
}


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

public class ExtendsTest {

	public static void main(String[] args) {
		BatMan batman = new BatMan();
		batman.fly();
		System.out.println("-----------");
		SuperBatMan superbatman = new SuperBatMan();
		superbatman.fly();

	}

}

class Hero{
	private int age;
	private int bloodNum;
	private int atc;
	private int defense;
	
	//有参构造器
	/*
	Hero(int age,int bloodNum,int atc,int defense){
		this.age = age;
		this.bloodNum= bloodNum;
		this.atc= atc;
		this.defense= defense;
	}
	*/
	//提供公共方法让外部访问
	void setAge(int age){
		this.age = age;
	}
	int getAge(){
		return age;
	}
	
	void setBloodNum(int bloodNum){
		this.bloodNum= bloodNum;
	}
	int getBlood(){
		return bloodNum;
	}
	
	void setAtc(int atc){
		this.atc= atc;
	}
	int getAtc(){
		return atc;
	}
	
	void setDefense(int defense){
		this.defense= defense;
	}
	int getDefense(){
		return defense;
	}
	
	//方法
	void releaseSkill(){
		System.out.println("释放技能");
	}
	void addBlood(){
		System.out.println("请加" + this.bloodNum+"ml的血");
	}
}

class BatMan extends Hero{
	
	void fly(){
		System.out.println("飞行");
	}
}

class SuperBatMan extends BatMan{
	//super();
	void fly(){
		System.out.println("超级飞行");
	}
}

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

package homework;

import java.util.Random;
import java.util.Scanner;

public class RandomTest {
	public static void main(String[] args) {
		Random random = new Random();
		int a = random.nextInt(10);
		
		Scanner input = new Scanner(System.in);
		boolean flag = true;
		
		while(flag){
			System.out.println("请输入一个所猜的数字:");
			int b = input.nextInt();
			if(b>a){
				System.out.println("你猜的数比a大");
			}else if(b<a){
				System.out.println("你猜的数比a小");
			}else{
				System.out.println("恭喜你猜对了!");
				flag = false;
			}
		}
		
	}

}




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值