1.做一个饲养员给动物喂食物的样例体现JAVA中的面向对象思想,接口(抽象类)的用处

package com.softeem.demo;

/**

*@authorleno

*动物的接口

*/

interface Animal

{

public void eat(Food food);

}

/**

*@authorleno

*一种动物类:猫

*/

class Cat implements Animal

{

public void eat(Food food)

{

System.out.println("小猫吃"+food.getName());

}

}

/**

*@authorleno

*一种动物类:狗

*/

class Dog implements Animal

{

public void eat(Food food)

{

System.out.println("小狗啃"+food.getName());

}

}



/**

*@authorleno

*食物抽象类

*/

abstractclass Food

{

protected String name;

public String getName() {

returnname;

}



public void setName(String name) {

this.name = name;

}

}



/**

*@authorleno

*一种食物类:鱼

*/

class Fish extends Food

{

public Fish(String name) {

this.name = name;

}

}

/**

*@authorleno

*一种食物类:骨头

*/

class Bone extends Food

{

public Bone(String name) {

this.name = name;

}

}



/**

*@authorleno

*饲养员类

*

*/

class Feeder

{

/**

*饲养员给某种动物喂某种食物

*@paramanimal

*@paramfood

*/

public void feed(Animal animal,Food food)

{

animal.eat(food);

}

}



/**

*@authorleno

*測试饲养员给动物喂食物

*/

public class TestFeeder {

public static void main(String[] args) {

Feeder feeder=new Feeder();

Animal animal=new Dog();

Food food=new Bone("肉骨头");

feeder.feed(animal,food); //给狗喂肉骨头

animal=new Cat();

food=new Fish("鱼");

feeder.feed(animal,food); //给猫喂鱼

}

}

2.写一个方法,用二分查找法推断随意整数在随意整数数组里面是否存在,若存在就返回它在数组中的索引位置,不存在返回-1

/**

*二分查找特定整数在整型数组中的位置(递归)

*@paramdataset

*@paramdata

*@parambeginIndex

*@paramendIndex

*@returnindex

*/

publicint binarySearch(int[] dataset,int data,int beginIndex,int endIndex)

{

int midIndex = (beginIndex+endIndex)/2;

if(data <dataset[beginIndex] || data>dataset[endIndex] || beginIndex>endIndex)

      return -1;

if(data <dataset[midIndex])

{

return binarySearch(dataset,data,beginIndex,midIndex-1);

}elseif(data>dataset[midIndex])

{

return binarySearch(dataset,data,midIndex+1,endIndex);

}else

{

return midIndex;

}

}



/**

*二分查找特定整数在整型数组中的位置(非递归)

*@paramdataset

*@paramdata

*@returnindex

*/

publicint binarySearch(int[] dataset ,int data)

{

int beginIndex = 0;

int endIndex = dataset.length - 1;

int midIndex = -1;

if(data <dataset[beginIndex] || data>dataset[endIndex] || beginIndex>endIndex)

     return -1;

while(beginIndex <= endIndex) {

midIndex = (beginIndex+endIndex)/2;

if(data <dataset[midIndex]) {

endIndex = midIndex-1;

} elseif(data>dataset[midIndex]) {

beginIndex = midIndex+1;

}else

{

return midIndex;

}

}

return -1;

}

3.写一个彩票号码的生成器。35选7(1~35)。而且生成的7个号码不能反复

(第n个数字要与前n-1个数字进行比較)

int[] number = new int[7];

  for(int i=0;i<7;i++){

     double d = Math.random();

     number[i]=(int)(d*35+1);

     for(int j=0;j<i;j++){

         if(number[i]==number[j]){

             i--;

             break;

         }

     }

  }

  for(int i=0;i<7;i++){

      System.out.println(number[i]);

  }

或者用HashSet(集合)存储数字。会自己主动过滤反复:

HashSet hs = new HashSet();

  while(true){

     double d = Math.random();

     int number = (int)(d*35+1);

     hs.add(number);

     if(hs.size()==7)break;

  }

  System.out.println(hs);

或者还有一种考虑就是将下标作为讨论的对象:数组temp存储1~35个整数,第一次,从此数组下标0~34个中随机筛选出一下标5,将此下标相应的数赋给result[0] = temp[5],然后将temp数组位置上的数用此数组的最后一个数代替temp[34],第二次,从剩余33个中随机选取下标,. . .

int[] result = new int[7];

  int[] temp = new int[35];

  for(int i=0;i<temp.length;i++){

     temp[i] = i+1;

  }

  for(int i=0;i<result.length;i++){

     int index = (int)(Math.random()*(35-i));

     result[i] = temp[index];

     temp[index] = temp[34-i];

  }

  for(int i=0;i<result.length;i++){

     System.out.println(result[i]);

  }

最新文章

  1. 附加属性出现Failed to assign to property的问题
  2. NodeJs编写小爬虫
  3. 仿照CREATE_FUNC实现CCLayer中的返回CCScene* 的静态函数,宏包装成CREATE_SCENE(XXLayer)
  4. Hyper-V中安装CentOS分辨率修改
  5. Linux SSH: key, agent, keychain
  6. zoj1107 FatMouse and Cheese
  7. 用尽洪荒之力学习Flask源码
  8. [Swift]LeetCode976. 三角形的最大周长 | Largest Perimeter Triangle
  9. linux安装成功后怎么调出终端
  10. Ubuntu MariaDB PhpMyAdmin
  11. 转://WITH AS and materialize hints
  12. 通过itools安装ipa时,如果装不上提示&quot;Mismatche...onIdentifierEntitlement&quot;
  13. gsoap使用总结
  14. SpringBoot项目单元测试
  15. Symbol在对象中的作用
  16. 【驱动】DM9000A网卡驱动框架源码分析
  17. WPF定义样式文件的方式
  18. ffmpeg 简介及使用
  19. Did Pong Lie? (差分系统 判负环)
  20. 10道典型的JavaScript面试题

热门文章

  1. POJ 3204 网络流的必须边
  2. CUDA笔记(八)
  3. 错排公式 全排列函数 next_permitation(a,a+n)
  4. phpstorm10安装并汉化
  5. linux 常用文本操作相关命令
  6. echarts如何修改数据视图dataView中的样式
  7. 一款很不错的html转xml工具-Html Agility Pack 实现html转Xml
  8. hdu-1342 Lotto
  9. oracle之ROWNUM的查询应用
  10. HDOJ 4009 Transfer water 最小树形图