Thinking in Java 9.6 适配接口
功能:生成任意个9位随机字符
过程:
- 类RandomWords 实现 Readable 接口
- 重构read方法:根据构造函数count值生产count个随机字母,共9位,以空格间隔,第一位为大写,剩余八位为元音与小写间隔
- 主方法:生成参数个RandomWords,并作为构造参数传递给Scanner,输出内容到控制台
个人实现:
(完成时间先不写也罢)
package thinking;import java.io.IOException;
import java.nio.CharBuffer;
import java.util.Random;
import java.util.Scanner;public class RandomWords implements Readable {private int count;private static final String captal = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";private static final String vowel = "aeiou";private static final String lowercase = "abcdefghijklmnopqrstuvwxyz";private Random random = new Random(47);@Overridepublic int read(CharBuffer cb) throws IOException {//无此则报错Exception in thread "main" java.nio.BufferOverflowException//抄书if(count-- == 0){return -1;}//抄网int number = random.nextInt( captal.length());cb.append( captal.charAt(number));for(int i=0;i<4;i++){int j = random.nextInt( vowel.length());cb.append( vowel.charAt(j));int k = random.nextInt( lowercase.length());cb.append( lowercase.charAt(k));}//无空格将输出为一行cb.append(" "); return 10;}//public IDE生成public RandomWords(int count){this.count = count;}public static void main(String[] args) {//抄书Scanner scanner = new Scanner(new RandomWords(10));//ifwhile(scanner.hasNext()){String result = scanner.next();System.out.println(result);}}}
原书实现
package thinkingjava;import java.io.IOException;
import java.nio.CharBuffer;
import java.util.Random;
import java.util.Scanner;public class RandomWords implements Readable {private static Random rand = new Random(47);private static final char[] captals = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();private static final char[] lowers = "abcdefghijklmnopqrstuvwxyz".toCharArray();private static final char[] vowels = "aeiou".toCharArray();private int count;public RandomWords(int count){ this.count = count; }@Overridepublic int read(CharBuffer cb) throws IOException {if(count-- == 0){return -1;//Indicates end of input}cb.append( captals[rand.nextInt( captals.length)] );for(int i=0;i<4;i++){cb.append( vowels[rand.nextInt( vowels.length)] );cb.append( lowers[rand.nextInt( lowers.length)] );}cb.append(" "); return 10;// Number of characters appended}public static void main(String[] args) {Scanner s = new Scanner(new RandomWords(10));while(s.hasNext()){System.out.println(s.next());}}
}
不同:
使用char数组
未定义无用变量
Thinking in Java 9.6 适配接口相关推荐
- java 外部接口调用 设计模式_《Java设计模式》之接口模式
-----------模式是思想的体现,而非具体的实现. 抽象的讲,类的接口是类允许其他类对象访问的方法与字段集.接口通常代表一种承诺,即方法需要实现接口方法名表示的操作,遵循代码注释和其他文档说明, ...
- java focuslistene_Java:FocusListener接口
有了ActionListener事件监听器,就一定要有FocusListener焦点事件监听器. FocusListener接口所在包 FocusListener接口在event包中,即在开头引入该包 ...
- java如何定义一个接口inf_java.抽象、接口
抽象 如果父类当中的方法不确定如何进行{}方法体实现,那么这就应该是一个抽象方法 定义 抽象方法:在返回值前加上abstract关键字,然后去掉大括号,分号直接结束. 抽象类:抽象方法所在的类,必须是 ...
- 【Android 应用开发】Android 网络编程 API笔记 - java.net 包相关 接口 api
Android 网络编程相关的包 : 9 包, 20 接口, 103 类, 6 枚举, 14异常; -- Java包 : java.net 包 (6接口, 34类, 2枚举, 12异常); -- An ...
- Java™ 教程(Queue接口)
Queue接口 Queue是在处理之前保存元素的集合,除了基本的Collection操作外,队列还提供额外的插入.删除和检查操作,Queue接口如下. public interface Queue&l ...
- Java中的某些接口为什么没有任何方法?
java中,有些接口内部没有声明任何方法,也就是说,实现这些接口的类不需要重写任何方法. 这些没有任何方法声明的接口又被叫做标识接口.标识接口对实现它的类没有任何语义上的要求,仅仅充当标识的作用,用来 ...
- Java中Collection集合接口
在Java中有数组,但数组不能存储引用变量.所以数组用得不是很多,一般Java中用继承Collection接口的实现类比较多.其中List接口和Set接口继承了Collection接口,而Map接口并 ...
- java hashedmap_Java基础 - Map接口的实现类 : HashedMap / LinkedHashMap /TreeMap 的构造/修改/遍历/ 集合视图方法/双向迭代输出...
import java.util.*; /**一:Collection接口的 * Map接口: HashMap(主要实现类) : HashedMap / LinkedHashMap /TreeMap ...
- Java中抽象类和接口在概念、语法和应用上的区别和关系
2019独角兽企业重金招聘Python工程师标准>>> 春招开始了,盆友们都忙着准备笔试.准备面试,复习学过的知识点,当然我也不例外,在这里祝每一个"有心人"心想 ...
- java调用c视频接口_JAVA本地调用(JNI- java调用c)
记录一下工作内容,对术语了解不多,暂且这样记着吧. java调用c 一.写jni的步骤如下: 1.创建java类,定义接口函数,使用native修饰: 2.将java类编译成class: 3.将cla ...
最新文章
- 2020-08-24绘制ROC PR曲线 核心方法总结 ,计算AUC核心方法
- WEB开发之如何改善PHP开发方式
- dataTable调用接口渲染数据,没有数据,报错
- [HEOI2016/TJOI2016]求和
- php算法学习,php算法学习之动态规划
- 551. Student Attendance Record I 从字符串判断学生考勤
- mysql一个表几亿数据_如何在mysql 造1亿条记录的大容量数据表?
- Google 视频编码格式 VP9 究竟厉害在哪里
- C++根据.h文件批量生成需要的函数框架
- 力扣-455 分发饼干
- void main(){char str[] = “\tab\n\014\\\“;printf(“%d“,strlen(str))}
- stm32入门(从51过渡到32)
- MongoDB,无模式文档型数据库简介
- WordPress 中文图片 上传 自动重命名
- 达梦8数据库安装教程
- mxplayer battle游戏接入
- PHP获取今日农历日期
- [转载]Swift GYB
- 7. 丈母娘嫌我不懂K8s的Service概念,让我去面壁
- 国密算法的ekey的使用--简述
热门文章
- Windows Mobile 获得 MAC,IP,IMEI,IMSI
- php项目踩到的empty函数的一个坑
- 详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
- 农民伯伯 谈 接口 [interface]
- 挂载、卸载、free查看内存情况、创建交换分区、回环设备、dd命令、自动挂载、fuser...
- Recover through incarnations: RMAN-20208
- 精通MVC3摘译(5)-使用URL模式最佳实践
- 6.微服务:从设计到部署 --- 选择部署策略
- 1.深入分布式缓存:从原理到实践 --- 缓存为王
- 5.docker 命令