上一篇:教你从实战中领悟继承(上) | 带你学《Java面向对象编程》之四十二
【本节目标】
通过阅读本节内容,你将对继承有更进一步的理解,并能够灵活结合继承进行结构化程序设计。
案例分析三(字符串统计)
编写程序, 统计出字符串“want you to know one thing”中字母n和字母o的出现次数。
对于本程序而言,最简单的操作方式就是直接在主方法里面定义一个操作,或者直接定义一个新的类进行处理。
范例:定义一个单独的处理类
class StringUtil {
//返回的第一个内容为字母n的个数,第二个内容为字母o的个数
public static int [] count(String str) {
int countData [] = new int [2] ;
char [] data = str.toCharArray() ; //将字符串变为字符数组
for (int x = 0 ; x < data.length ; x ++) {
if (data[x] == ‘n’ || data[x] == ‘N’) {
countData[0] ++ ;
}
if (data[x] == ‘o’ || data[x] == ‘O’) {
countData[1] ++ ;
}
}
return countData ;
}
}
public class JavaDemo{
public static void main(String args[]) {
String str = “want you to know one thing” ;
int result [] = StringUtil.count(str) ;
System.ou.println(“字母n的个数:” + result[0]) ;
System.ou.println(“字母o的个数:” + result[1]) ;
}
}
图一 执行结果一
以上的解决方案严格来讲只是一种顺序式的思维模式解决的,假设说现在统计的是字母o或者n的个数,那么还有可能进行各种其它统计的设计。
字符串统计操作:
图二 统计设计
class StringUtil {
private String content ; //需要保存字符串
public StringUtil(String content) {
this. content = content;
}
public String getContent() {
return this.content ;
}
public String getInfo () { //默认的信息返回
return this.getContent(() ;
}
}
class StringContent extends StringUtil {
private int nCount ;
private int oCount ;
public StringContent (String content) {
super(content) ;
this.countChar() ; //构造方法统计
}
public void countChar() {
char [] data = super.getCount().toCharArray() ; //将字符串变为字符数组
for (int x = 0 ; x < data.length ; x ++) {
if (data[x] == ‘n’ || data[x] == ‘N’) {
this.nCount ++ ;
}
if (data[x] == ‘o’ || data[x] == ‘O’) {
this.oCount ++ ;
}
}
}
public int getNCount() {
return this.nCount ;
}
public int getOCount() {
return this.oCount ;
}
public String getInfo() {
return “字母n的个数:” + this.nCount + “字母o的个数:” + this.oCount ;
}
}
public class JavaDemo{
public static void main(String args[]) {
StringCount sc = new StringCount(“want you to know one thing”) ;
System.out.println(sc.getInfo()) ;
}
}
图二 执行结果二
任何方案都可以,如果采用第一种方案比较直观,但是第二种方案更加适合于结构化的设计。
想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学