JAVA基础实例(二)

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

}

时间: 2024-10-17 22:09:56

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

java 基础(二)

java 基础(二)java 基础(二) 2016-2-1 by Damon 61. 编写多线程程序有几种实现方式 Java 5以前实现多线程有两种实现方法:一种是继承Thread类:另一种是实现Runnable接口.两种方式都要通过重写run()方法来定义线程的行为,推荐使用后者,因为Java中的继承是单继承,一个类有一个父类,如果继承了Thread类就无法再继承其他类了,显然使用Runnable接口更为灵活. 补充:Java 5以后创建线程还有第三种方式:实现Callable接口,该接口中的

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

Java基础十二--多态是成员的特点 一.特点 1,成员变量. 编译和运行都参考等号的左边. 覆盖只发生在函数上,和变量没关系. Fu f = new Zi();System.out.println(f.num);//是父类,答案是3 2,成员函数(非静态). 编译看左边,运行看右边. 因为成员函数存在覆盖特性. Fu f = new Zi();//f.show();输出的是子类里面的show方法 3,静态函数. 编译和运行都看左边. 静态函数不具备多态性,多态性是对象的多态性,然后静态函数不涉

java基础(二章)

java基础(二章) 一,变量 1.变量是内存中的一个标识符号,用于存储数据 2.变量命名规则 l  必须以字母.下划线 _ .美元符号 $ 开头 l  变量中,可以包括数字 l  变量中,不能出现特殊的符号,空格 l  java中的关键字(红色字体),不能做变量名 3.变量命名,遵循 骆驼命名法(变量由1个以上的单词组成,第1个单词首字母小写,后面单词的首字母大写) 二, 数据类型 a)        数字(整型int(整数).双精度浮点型double(小数)) b)        字符型(c

Java Web 学习笔记 第三章 java基础(二)

第三章 java基础(二) 一.转义符 转义字符是"\",通过转义字符,可表示一些特殊的字符. 例如: '\n'  表示回车 '\t'   表示 制表符字符,一个制表符表示向右跳8-10个字符 '\\'   表示\ '\''   表示单引号 '\"'  表示双引号 "\u4e2d"表示unicode编码对应的字符(汉字:中). 二.布尔类型的概念和用法 boolean 类型用来表示肯定或否定两种可能. boolean 常用在分支语句.循环语句中. true

Java基础知识(二)

1,字符串 new String("abc")创建了几个对象? 一个或两个,如果常量池中原来有"abc",则只创建一个对象:如果常量池中原来没有字符串"abc",那么就会创建两个对象. String s="abc"; String s1="ab"+"c"; System.out.println(s==s1); 输出 true ,因为"ab"+"c"

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

前言 为跳槽面试做准备,今天开始进入 Java 基础的复习.希望基础不好的同学看完这篇文章,能掌握 lambda 表达式,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆. 一.什么是 lambda 表达式 Java8 是我们使用最广泛的稳定 Java 版本,lambda 就是其中最引人瞩目的新特性.lambda 是一种闭包,它允许把函数当做参数来使用,是面向函数式编程的思想,可以使代码看起来更加简洁.是不是听得一脸懵逼?我举个栗子你就明白了. 烂掉牙的例子,在没有 lambda

黑马程序员——Java基础语法(二)---流程控制

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 本文主要介绍java基础语法中的流程控制,流程控制是我们写出灵活代码的基础.常见的流程控制主要有四类:判断结构.选择结构.循环结构.其他控制结构 一.判断结构 判断结构的标志是if语句,if语句主要有三种表现形式: 1.if(条件表达式) { 执行语句 } 注意: 1.如果if语句中只有一条语句,那么可以不写大括号.不过初学者一定要写括号,以免出错. 2.如果if语句没写大括号,if就只能控制

Java基础知识二次学习-- 第一章 java基础

基础知识有时候感觉时间长似乎有点生疏,正好这几天有时间有机会,就决定重新做一轮二次学习,挑重避轻 回过头来重新整理基础知识,能收获到之前不少遗漏的,所以这一次就称作查漏补缺吧!废话不多说,开始! 第一章  JAVA简介 时间:2017年4月24日10:23:32 章节:01章_02节 内容:jdk的配置与安装 完成情况:已经完成,cmd中javac提示出相关命令 时间:2017年4月24日10:30:39 章节:01章_04节 内容:输出HelloWorld 完成情况: 已经完成 javac先将

Java基础知识二次学习-- 第二章 基础语法与递归补充

第二章 基础语法与递归补充   时间:2017年4月24日10:39:18 章节:02章_01节,02章_02节 视频长度:49:21 + 15:45 内容:标识符,关键字与数据类型 心得:由字母,下划线,$,数字组成,应该由字母,下划线$开头,同时应该避开java保留字符 变量是内存中的一小块区域,使用变量名来访问这块区域 执行过程中的内存管理(疑问:这里的内存和Jvm的一样吗?) code segment 存放代码 data segment 静态变量 字符串常量 stack 栈 局部变量 h