Java-接口-定义接口Filter及其实现类WordFilter

所谓:“纸上得来终觉浅,绝知此事要躬行。”

关于接口的知识,可以几分钟过一遍:Java-接口—知识(基础)-CSDN博客

现在就是练习time,先来看题:

 

定义一个接口 Filter,表示过滤器,其定义的如下:

  1. Filter接口有一个抽象方法:public void doFilter(); 表示进行过滤操作。

定义一个类:WordFilter:

WordFilter表示单词过滤器,该类要实现Filter接口,实现其doFilter()方法,实现过滤单词,将单词的首字母转换为对应的大写字母,剩余的字母全小写;

对于WordFilter类的要求如下:

  1. 一个String类型的成员变量 word,表示待进行过滤的单词,并定义该变量的setter和getter方法;
  2. 带参数的构造方法,实例化过滤器对象时,按参数值初始化成员变量word的值;
  3. 实现doFilter方法,在实现的doFilter方法中,将word字符串的首字母大写,其余字母全小写;
  4. 对于WordFilter类的更多接口细节可参看Main类中的代码。

Main类代码:

import java.util.Scanner;
public class Main {public static void main(String[] args) throws ClassNotFoundException {Class<?> clazz1 = Class.forName("Filter");Class<?> clazz2 = Class.forName("WordFilter");System.out.println(clazz1.isInterface()+" "+clazz1.isAssignableFrom(clazz2));System.out.println("请输入一个英文单词:");Scanner scanner = new Scanner(System.in);String input = scanner.next();WordFilter filter = new WordFilter(input);System.out.println("原单词是:"+filter.getWord());filter.doFilter();System.out.println("过滤处理后:"+filter.getWord());filter.setWord("programmING");System.out.println("原单词是:"+filter.getWord());filter.doFilter();System.out.println("过滤处理后:"+filter.getWord());}
}

输入样例:

footBall

输出样例:

输出原单词和过滤后的单词,例如:

true true
请输入一个英文单词:
原单词是:footBall
过滤处理后:Football
原单词是:programmING
过滤处理后:Programming

 题目分析:

题目要求大概两部分:
1.

 

2. 

刚刚学了接口,就可以派上用场了。

定义接口:

代码:因为题干要求,我们直接写在一个java文件里,只有一个public 类,interface前面也不加public

interface Filter
{public void doFilter();
}
定义类:相关知识点和细节不再展开

class WordFilter implements Filter
{private String word;//表示待进行过滤的单词public void setWord(String word){this.word = word;}public String getWord(){return word;}//setter和getter方法public WordFilter(String word){this.word = word;}//有参构造器}

我们常说:做一道题总要学点东西:

学点新东西: 

我们在这里介绍几个方法:

  1. toUppercase() --- 全变成大写
  2. toLowercase() ---全变成小写
  3. concat() --- 字符串拼接
  4. substring() --- 字符串截取

我们在学习新的方法知道了大概功能,先在API文档,看看它的出处,是否需要我们导包,再看它的参数和返回。 

 

lang包不需要手动导入 :

1.Object类是所有类的父类,我们不写,但都默认继承,就看我们会不会用了

2.提前下好了,所以以后查到是lang包的方法,我们都不导包 

 

全都是lang包,那跳过导包这一步。

大小转换

使用的时候,就是当前该字符串对象调用该方法。无参数,返回一个字符串:就是对象全部变成大写。

小写也是同样的道理,字符串对象.toLowercase();

字符串拼接

API文档如下:

 参数是要拼接在字符串对象后面的字符串,返回一个拼好的字符串。

 字符串截取

参数是俩个int型,表示字符下标,前一个int是开始索引,后一个int是结束索引;至于得到的字符有包含前面一个int下标的字符,后一个int的下标不包含在内。我们大胆猜测,这个方法的源代码可能是把后一个int下标的字符变成了'/0';

比如:humberger,我们要得到umber,substring里面的参数是什么呢?

u的下标是1,r下标是5,我们要的后面的一个int变成'\0'的话,就是取6,前一个就是1。所以,参数列表是(1,6)

这也是上图中参数:包括在内,是指要得到的字符串包括了前一个参数下标的字符。独占,是变成'\0‘.

接口实现:将word字符串的首字母大写,其余字母全小写

我们结合上面介绍的几个方法,思路大概如下:
我们把首字母和其余部分分别处理,首字母用toUppercase(),其余部分就用toLowercase(),至于最后要得到一个完整的字符串,我们就用字符串拼接方法,把这俩个字符串拼起来。

第一步就是把首字母和其余部分分开,我们可以用俩次字符串截取方法。

思路如上,代码实现:

class WordFilter implements Filter
{//...public void doFilter()//接口实现,记得主动public{String s1 = word.substring(0,1);//使用的String类的方法,肯定先有对象再调用相应的方法String s2 = word.substring(1,word.length());//String类的方法求长度,对象.length()String s3 = s1.toUpperCase();//对首字母大写操作String s4 = s2.toLowerCase();//对其余部分小写操作String s5 = s3.concat(s4);//拼接字符串,参数里的字符串拼接到原字符串对象的末尾word = s5;//细节:最后得到的字符串赋给word,或者真正说法是让word指向s5,把s5的地址赋给word}}

okok,完整代码参考:

 interface Filter
{public void doFilter();
}class WordFilter implements Filter
{String word;//表示待进行过滤的单词public void setWord(String word){this.word = word;}public String getWord(){return word;}public WordFilter(String word){this.word = word;}public void doFilter(){   String s1 = word.substring(0,1);String s2 = word.substring(1,word.length());String s3 = s1.toUpperCase();String s4 = s2.toLowerCase();String s5 = s3.concat(s4);word = s5;  }}


 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/600596.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

9 年蝉联 IM 第一!艾瑞咨询发布最新报告,融云持续引领专业通信云行业

近期&#xff0c;艾瑞咨询发布的《2024 年全球互联网通信云&#xff08;IMRTC&#xff09;行业研究报告》&#xff08;下简称《报告》&#xff09;显示&#xff0c;2023 年全球互联网通信云市场规模达 65 亿元&#xff0c;其中中国市场占比约 39%。 过去一年&#xff0c;IM Pa…

【AN】简单的实现点击播放影片剪辑再点击暂停的功能

动画故事背景 一个影片剪辑&#xff0c;里面做了一个动画。我希望影片剪辑一开始是暂停的&#xff0c;按钮点击后开始播放&#xff0c;再次点击就暂停&#xff01; 下图那个花瓣就是影片剪辑&#xff0c;里面有个掉落的路径引导动画&#xff01; 1.首先给花瓣影片剪辑一个实例…

简析数据安全保护策略中的十个核心要素

数据显示&#xff0c;全球企业组织每年在数据安全防护上投入的资金已经超过千亿美元&#xff0c;但数据安全威胁态势依然严峻&#xff0c;其原因在于企业将更多资源投入到数据安全能力建设时&#xff0c;却忽视了这些工作本身的科学性与合理性。因此&#xff0c;企业在实施数据…

深度探索Sketch:功能、历程、替代软件及技巧一览

Sketch 它是一个适合所有设计师的矢量绘图应用程序。矢量绘图也是设计网页、图标和界面的最佳方式。但除了矢量编辑的功能外&#xff0c;我们还增加了一些基本的位图工具&#xff0c;如模糊和颜色校正。 为什么选择Sketch Sketch 它是为图标设计和界面设计而生的。它是一个优…

DC-1知识点通关

知识点总结 1.nmap扫描(端口、内核版本) 2.burp爆破密码 3.目录扫描 4.遍历目录 5.查看CMS&#xff0c;并利用历史漏洞 6.msf利用历史漏洞&#xff0c;反弹shell 7.内核提权 8.查看配置文件 9.更改数据库密码 10.medusa/hydra 爆破 11.suid提权 kali相关ssh密码爆破…

组合数(费马小定理, 快速幂)

给定 n 组询问&#xff0c;每组询问给定两个整数 a&#xff0c;b&#xff0c;请你输出 Cbamod(1097)的值。 输入格式 第一行包含整数 n。 接下来 n 行&#xff0c;每行包含一组 a 和 b。 输出格式 共 n 行&#xff0c;每行输出一个询问的解。 数据范围 1≤n≤10000, 1≤…

【鸿蒙开发】第十九章 Image图片处理

1 简介 应用开发中的图片开发是对图片像素数据进行解析、处理、构造的过程&#xff0c;达到目标图片效果&#xff0c;主要涉及图片解码、图片处理、图片编码等。 图片解码 指将所支持格式的存档图片解码成统一的PixelMap&#xff0c;以便在应用或系统中进行图片显示或图片处理…

基于Springboot高校学生饮食推荐系统的设计与实现(论文+源码)_kaic

摘 要 随着网络科技的不断发展以及人们经济水平的逐步提高&#xff0c;计算机如今已成为人们生活中不可缺少的一部分&#xff0c;为饮食分享轻松便捷的管理信息&#xff0c;基于java技术的饮食分享的设计与实现了一款简洁、轻便的管理系统。本系统解决了饮食分享管理事务中的主…

Ethernet 汇总

Ethernet系统 硬件最小系统 CPU:可以是复杂的芯片,也可以是小的单片机DMA:用于减轻CPU负担,搬运数据系统Memory<->FIFOMAC:可以集成在芯片里面,用于CPU和PHY之间的通信MII:接口用于MAC和PHY的通信,包括控制MDIO和数据DataPHY:模拟器件,最底层,数据收发源头软件…

记一次Cannot deploy POJO class [xxx$$EnhancerBySpringCGLIB$$xxx]的错误

最近项目上需要使用websocket做服务端&#xff0c;那好说啊&#xff0c;直接springboot集成的websocket 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId><versi…

【超简单】基于PaddleSpeech搭建个人语音听写服务

一、【超简单】之基于PaddleSpeech搭建个人语音听写服务 1.需求分析 亲们,你们要写会议纪要嘛?亲们,你们要写会议纪要嘛?亲们,你们要写会议纪要嘛?当您面对成吨的会议录音,着急写会议纪要而不得不愚公移山、人海战术?听的头晕眼花,听的漏洞百出,听的怀疑人生,那么你…

与汇智知了堂共舞,HW行动开启你的网络安全新篇章!

**网安圈内一年一度的HW行动来啦&#xff01; ** 招募对象 不限&#xff0c;有HW项目经验 或持有NISP二级、CISP证书优先 HW时间 以官方正式通知为准 工作地点&#xff1a;全国 薪资待遇 带薪HW &#xff08;根据考核成绩500-4000元/天不等&#xff09; 招募流程 1.填写报名…