2017/10.13/10.14作业

来源:互联网 发布:nba2k17乔丹捏脸数据 编辑:程序博客网 时间:2024/06/06 18:24
1. 定义一个工具类

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

方法分别有:


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


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



public class WorkOne{
    /*
     * 如果不定义为工具类,可以利用泛型,在仅参数类型不同时,实现代码复用。
     * public class WorkOne<T extends java.lang.Number>
     */
    private WorkOne() {


    }
        //1.求数组值的和.
        public static int sum(int a[])
        {
            int sum=0;
            for(int i=0;i<a.length;i++)
            {
                 sum=sum+a[i];
            }
            return sum;
        }
        public static double sum(double a[])
        {
            double sum=0;
            for(int i=0;i<a.length;i++)
            {
                 sum=sum+a[i];
            }   
            return sum;
        }
        //2,数组获取最值(获取数组中的最大值最小值)
        public static int max(int a[])
        {
            for(int i=0;i<a.length-1;i++)
            {
                for(int j=i+1;j<a.length;j++)
                {
                    if(a[i]>a[j])//升序:由小到大
                    {
                        int temp=a[i];
                        a[i]=a[j];
                        a[j]=temp;
                    }
                }       
            }
            return a[a.length-1];   
        }
        public static double max(double a[])
        {
            for(int i=0;i<a.length-1;i++)
            {
                for(int j=i+1;j<a.length;j++)
                {
                    if(a[i]>a[j])//升序:由小到大
                    {
                        double temp=a[i];
                        a[i]=a[j];
                        a[j]=temp;
                    }
                }       
            }
            return a[a.length-1];   
        }
        /*3.对数组进行升序排序.
         * 选择排序:最多n-1趟。比较次数最多1/2(n^2-n). T(n)=O(n^2)*/
        public static void sortByAsce(int a[])
        {


            for(int i=0;i<a.length-1;i++)
            {
                for(int j=i+1;j<a.length;j++)
                {
                    if(a[i]>a[j])//升序:由小到大
                    {
                        int temp=a[i];
                        a[i]=a[j];
                        a[j]=temp;
                    }
                }       
            }   
        }
        public static void sortByAsce(double a[])
        {


            for(int i=0;i<a.length-1;i++)
            {
                for(int j=i+1;j<a.length;j++)
                {
                    if(a[i]>a[j])//升序:由小到大
                    {
                        double temp=a[i];
                        a[i]=a[j];
                        a[j]=temp;
                    }
                }       
            }   
        }


        /*4,数组元素逆序 (就是把元素对调)
         * 令n=a.length
         */
        public static void back(int a[])
        {
            if(a.length%2==0)//n为偶数
            {
             for(int i=0,j=a.length-1;(i<a.length/2)&&(j>=a.length/2);i++,j--)
              {
                int temp=a[i];
                a[i]=a[j];
                a[j]=temp;
              }     
            }
            else//n为奇数,a[n/2]不进行交换//如:n=5  0,1,2,3,4
            {
                for(int i=0,j=a.length-1;(i<a.length/2)&&(j>a.length/2);i++,j--)
                  {
                    int temp=a[i];
                    a[i]=a[j];
                    a[j]=temp;
                  }       
            }
        }//back方法结束
        public static void back(double a[])
        {
            if(a.length%2==0)//n为偶数
            {
             for(int i=0,j=a.length-1;(i<a.length/2)&&(j>=a.length/2);i++,j--)
              {
                double temp=a[i];
                a[i]=a[j];
                a[j]=temp;
              }     
            }
            else//n为奇数,a[n/2]不进行交换//如:n=5  0,1,2,3,4
            {
                for(int i=0,j=a.length-1;(i<a.length/2)&&(j>a.length/2);i++,j--)
                  {
                    double temp=a[i];
                    a[i]=a[j];
                    a[j]=temp;
                  }       
            }
        }//back方法结束
        //数组遍历(依次输出数组中的每一个元素)
        public static void print(int a[])
        {
            for(int i=0;i<a.length;i++)
            {
                System.out.print(a[i]+" ");
            }   
        }       
        //数组遍历(依次输出数组中的每一个元素)
        public static void print(double a[])
        {
            for(int i=0;i<a.length;i++)
            {
                System.out.print(a[i]+" ");
            }   
        }       
    public static void main(String[] args) {
        int[] a= {1,5,6,2,9};
        double[] b= {1,5,6,2,9};
        System.out.println("a数组初始序列:");
        WorkOne.print(a);
        System.out.println("\rb数组初始序列:");
        WorkOne.print(b);
        System.out.println("\ra数组的和为:"+WorkOne.sum(a));
        System.out.println("b数组的和为:"+WorkOne.sum(b));
        System.out.println("a数组最大数为:"+WorkOne.max(a));
        System.out.println("b数组最大数为:"+WorkOne.max(b));
        WorkOne.sortByAsce(a);
        System.out.println("a数组升序排列:");
        WorkOne.print(a);
        WorkOne.sortByAsce(b);
        System.out.println("\rb数组升序排列:");
        WorkOne.print(b);
        int[] a2= {1,5,6,2,9};
        double[] b2= {1,5,6,2,9};
        WorkOne.back(a2);
        System.out.println("\ra数组逆序排列:");
        WorkOne.print(a2);
        WorkOne.back(b2);
        System.out.println("\rb数组逆序排列:");
        WorkOne.print(b2);
    }
}


2. a.定义一个英雄类  Hero
   属性:(全部私有,提供公共方法让外部访问)
        年龄, 血量 ,攻击力,防御力
   方法:
        释放技能,加血.

   必须至少包含一个构造方法,且该构造方法可以初始化所有四个成员变量   
   
   b.定义一个类BatMan继承Hero类 
   方法:
        飞行(方法中输出一行打印"飞行")


public class WorkTwo {
    private int age;
    private int blood;
    private int attackPower;
    private int defensePower;
    WorkTwo(){
        age=3;
        blood=4;
        attackPower=5;
        defensePower=6;
    }
    public int getAge()
    {
        return age;
    }
    public int getblood()
    {
        return blood;
    }
    public int getAttackPower()
    {
        return attackPower;
    }
    public int getDefensePower()
    {
        return defensePower;
    }
    //释放技能
void skills() {
        System.out.println("火光");
        attackPower--;  
    }
    //加血
void addBlood(){
        blood++;
        System.out.println("血量值"+blood);
    }
}


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


class KingOfGlory {
static void main(String[] args) {
        BatMan b=new BatMan();
        SuperBatMan s=new SuperBatMan();
        b.fly();
        s.fly();    
    }
}


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



   import java.util.Scanner;
import java.util.Random;
public class WorkThree {
    public static void main(String[] args) {  
        Random random = new Random();  


       final int a = random.nextInt(101);//系统随机产生数a
       Scanner sc = new Scanner(System.in); 


       for(int i=0;i<100;i++){
      System.out.println("请输入一个数:");
      int b = sc.nextInt();
  if(a>b){
      System.out.println("输入的数比a小");
  }else if(a<b){
      System.out.println("输入的数比a大");
      }else{
          System.out.println("输入的数和a一样大");
          return;
      }


  System.out.println("请继续输入一个数");


    }  
    }
    }