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]);

  }

JAVA基础实例(二)的更多相关文章

  1. Java基础十二--多态是成员的特点

    Java基础十二--多态是成员的特点 一.特点 1,成员变量. 编译和运行都参考等号的左边. 覆盖只发生在函数上,和变量没关系. Fu f = new Zi();System.out.println( ...

  2. java基础-多线程二

    java基础-多线程二 继承thread和实现Runnable的多线程每次都需要经历创建和销毁的过程,频繁的创建和销毁大大影响效率,线程池的诞生就可以很好的解决这一个问题,线程池可以充分的利用线程进行 ...

  3. Java实习生常规技术面试题每日十题Java基础(二)

    目录 1. JAVA 的反射机制的原理. 2.静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同? 3.如何将String类型转化成Number类型. 4.什 ...

  4. java 基础知识二 基本类型与运算符

    java  基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ...

  5. java基础(二章)

    java基础(二章) 一,变量 1.变量是内存中的一个标识符号,用于存储数据 2.变量命名规则 l  必须以字母.下划线 _ .美元符号 $ 开头 l  变量中,可以包括数字 l  变量中,不能出现特 ...

  6. JAVA基础(二)—— 常用的类与方法

    JAVA基础(二)-- 常用的类与方法 1 Math类 abs ceil floor 绝对值 大于等于该浮点数的最小整数 小于等于该浮点数的最大整数 max min round 两参数中较大的 两参数 ...

  7. Java基础系列二:Java泛型

    该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 一.泛型概述 1.定 ...

  8. Java 基础(二)| 使用 lambad 表达式的正确姿势

    前言 为跳槽面试做准备,今天开始进入 Java 基础的复习.希望基础不好的同学看完这篇文章,能掌握 lambda 表达式,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆. 一.什么是 ...

  9. Java基础(十二)--clone()方法

    Clone在Java中就是用来复制对象,通过分配一个和源对象相同大小的内存空间,然后创建一个新的对象,那么他和=的区别在哪? 通过=实现对象拷贝: @Data @NoArgsConstructor @ ...

  10. Java基础教程——二维数组

    二维数组 Java里的二维数组其实是数组的数组,即每个数组元素都是一个数组. 每个数组的长度不要求一致,但最好一致. // 同样有两种风格的定义方法 int[][] _arr21_推荐 = { { 1 ...

随机推荐

  1. lightoj--1155-- Power Transmission (最大流拆点)

    Power Transmission Time Limit: 2000MS   Memory Limit: 32768KB   64bit IO Format: %lld & %llu Sub ...

  2. es6 --- 功能

    标记的模板文字 1.模板文字!确实很棒.我们不再会这样做…. const concatenatedString = "I am the " + number + "per ...

  3. [学习笔记]HTTP协议

    转自:www.cnblogs.com/li0803/archive/2008/11/03/1324746.html Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的协议,由于 ...

  4. Ubuntu上使用过的命令,Linux常用命令,mount 硬盘挂载, ls 列表list命令,cp 复制copy命令,mkdir 创建文件夹 ,nano 编辑器,cat 文档合并,chmod 文件权限,ssh win10连接ubuntu服务器的步骤

    man 帮助 > man ls # ubuntu的帮助 tar.gz 压缩解压 > tar -zcvf yzn.tar.gz /home/yzn # 压缩 > tar -zxvf y ...

  5. Win10 + YOLOv3训练VOC数据集-----How to train Pascal VOC Data

    How to train (Pascal VOC Data): Download pre-trained weights for the convolutional layers (154 MB):  ...

  6. caioj 1082 动态规划入门(非常规DP6:火车票)

    f[i]表示从起点到第i个车站的最小费用 f[i] = min(f[j] + dist(i, j)), j < i 动规中设置起点为0,其他为正无穷 (貌似不用开long long也可以) #i ...

  7. ArcGIS api for javascript——地理编码任务-反向地理编码

    描述 反向地理编码确定地图上给出点的地址.本例展示了如何通过ArcGIS JavaScript API做反向地理编码. 反向地理编码和常规的地理编码请求都使用Locator类和ArcGIS Serve ...

  8. hdu 5380 Travel with candy(双端队列)

    pid=5380">题目链接:hdu 5380 Travel with candy 保持油箱一直处于满的状态,维护一个队列,记录当前C的油量中分别能够以多少价格退货,以及能够推货的量. ...

  9. OpenGl 坐标转换

    1. OpenGL 渲染管线 OpenGL渲染管线分为两大部分,模型观測变换(ModelView Transformation)和投影变换(Projection Transformation). 做个 ...

  10. 改动npm包管理器的registry为淘宝镜像(npm.taobao.org)

    起因 安装了node.安装了npm之后,官方的源实在是 太慢了! 看了看淘宝的npm镜像, http://npm.taobao.org/  居然说让我再下载一个cnpm,要不然就每次都得install ...