1、1,字符串,第十五章,2,回顾与作业点评,基本数据类型和引用数据类型作为方法参数,在传递时有什么不同之处?画出在如下“计算学生平均分 ”代码中,程序执行时的内存分配过程图,class TestScore static void Main(String args) Students stu=new Students();Score sc=new Score();float avg=0; stu.java=80; stu.database=95;stu.html=77; avg=sc.GetAvg(stu);Console.WriteLine(“该学生的平均分为:“+avg); ,public c
2、lass Score /计算平均分,对象作为参数public float GetAvg(Students stu) float avg=0;avg=(stu.java +stu.database +stu.html )/3;return avg; ,main:stu,0x2a486c,0,main:avg,84.0,getAvg:stu,0x2a486c,0,getAvg:avg,84.0,省略内存分配,3,预习检查,如何定义一个字符串? 使用什么方法可以获得字符串的长度? 如何定义一个StringBuilder类的对象?,4,本章任务,实现注册信息的有效性验证 格式化显示商品金额,5,本章目
3、标,掌握String的基本用法 会使用=和Equals()比较字符串 会使用StringBuilder类方法对字符串进行操作,6,无处不在的字符串,生活中的字符串使用String对象存储字符串String类位于System命名空间中,具有丰富的方法 计算字符串的长度、比较字符串、连接字符串、提取字符串,频繁使用的字符串,“欢迎进入”,“Hello World”,“教育改变生活”,String s = “Hello World“;,String s = new String(“Hello World“);,String s = new String();,7,String类提供了Length属性
4、,确定字符串的长度,字符串长度3-1,1、注册新用户,要求密码长度不能小于6位,8,class Register static void Main(String args) String uname,pwd;Console.Write(“请输入用户名: “);uname=Console.ReadLine();Console.Write(“请输入密码: “);pwd=Console.ReadLine();if( pwd.Length=6 )Console.Write(“注册成功! “);elseConsole.Write(“密码长度不能小于6位!“); ,字符串长度3-2,判断密码长度,9,字符
5、串长度3-3,计算字符串长度,字符串,长度,使用Length 属性获得,返回字符串中的字符数,使用属性:,字符串标识符.Length;,属性定义原型:,public int Length;,10,String类提供了Equals( )方法,比较存储在两个字符串对象的内容是否一致,字符串比较5-1,2、注册成功后,实现登录验证。用户名为“TOM”,密码为“1234567”,11,class Login static void Main(String args) String uname,pwd; Console.Write(“请输入用户名: “);uname=Console.ReadLine()
6、;Console.Write(“请输入密码: “);pwd=Console.ReadLine(); if( uname.Equals(“TOM“) ,字符串比较5-2,比较用户名和密码是否正确,12,字符串比较5-3,Equals()方法比较原理C#:“=”和Equals()功能相同Java语言:两者不同,只能用equals()比较内容,字符串 1,字符串 2,Equals(): 检查组成字符串内容的字符是否完全一致,13,使用ToLower()方法 使用ToUpper( )方法,字符串比较5-4,3、登录时不考虑用户名的大小写问题,实现登录,14,public class Login pub
7、lic static void Main(String args) if ( uname.Equals(“Jbit“) ,字符串比较5-5,uname.ToLower().Equals(“Jbit “).ToLower() &pwd.ToUpper().Equals(“Bdqn “).ToUpper(),15,指导实现登录,训练要点: String类的使用。 带参方法的定义和使用 需求说明: 实现会员注册,要求用户名长度不小于3,密码长度不小于6,注册时两次输入密码必须相同 实现思路: 1、创建类Register 2、创建验证方法Verify() 3、调用方法测试程序 难点指导: 创建验证方法
8、Verify(),讲解需求说明,完成时间:20分钟,16,共性问题集中讲解,常见调试问题及解决办法 代码规范问题,共性问题集中讲解,17,字符串连接3-1,public static void Main(String args) int sqlScore = 80; /sql成绩int javaScore = 90; /java成绩double htmlScore = 86.7; /html成绩/创建成绩单String scoreSheet = “SQL:“ + sqlScore + “ Java:“ + javaScore + “ HTML:“ + htmlScore; /打印成绩单Cons
9、ole.WriteLine(“*成绩单*“);Console.WriteLine(scoreSheet);,4、某学生的成绩如表所示,输出他的成绩单,“+”连接字符串,数值型变量自动转换成String类型,18,字符串连接3-2,方法1:使用“+” 方法2:使用Console类的Write/WriteLine方法 方法3:使用String类的Format()方法,你好,张三!,String name = new String(“张三“); Console.WriteLine(“你好,0!“, name);,输出结果,String sentence = String.Format(“你好,0!“
10、, name); Console.WriteLine(sentence);,占位符,19,字符串连接3-3,String scoreSheet = String.Format(“SQL:0 Java:1 HTML:2“,sqlScore, javaScore, htmlScore); Console.WriteLine( scoreSheet );,SQL:80 Java:90 HTML:86.7,输出结果,20,合法的文件名应该以.java结尾 合法的邮箱名中至少要包含“”和“.”, 并检查“”是否在“.”之前,字符串常用提取方法4-1,5、判断.java文件名是否正确,判断邮箱格式是否正确
11、,21,字符串常用提取方法4-2,常用提取方法举例,0 1 2 3,位置,返回出现第一个匹配的位置, 如果没有找到字符或字符串,则返回-1,22,字符串常用提取方法4-3,beginIndex: 字符串的位置从0开始算;length: 字符串的字符个数,23,字符串常用提取方法4-4,/检查Java文件名int index = fileName.LastIndexOf(“.“);if(index!=-1 ,/检查你的邮箱格式 if (email.IndexOf() !=- 1 ,检查文件和邮箱格式,24,小结,String word = “Hello, “; word = word.Trim(
12、); String s = string.Format(“0小鱼儿!“, word); int index1 = s.IndexOf(,); int index2 = s.IndexOf(!); Console.WriteLine(s.Substring(_, _);,index1+1,index2-index1-1,如果要打印输出“小鱼儿”,应填入的代码是什么?,25,String类提供了Split()方法,将一个字符串分割为子字符串,结果作为字符串数组返回,字符串拆分 2-1,6、有一段歌词,每句都以空格“ ”结尾,请将歌词每句按行输出,26,class Lyric static void
13、 Main(String args) String words=“长亭外 古道边 芳草碧连天 晚风扶 柳笛声残 夕阳山外山“;String printWord=new String100; Console.WriteLine(“*原歌词格式*n“+words);Console.WriteLine(“n*拆分后歌词格式*“);printWord=words.Split(“ “); for(int i=0;iprintWord.Length;i+)Console.WriteLine( printWordi ); ,字符串拆分 2-2,拆分字符串,返回值为字符串数组,遍历输出字符串,27,练习实现会
14、员注册升级,需求说明:验证身份证号、手机号、做记号格式是否正确,完成时间:25分钟,28,练习判断字符出现次数,需求说明: 输入一个字符串,输入一个字符,判断该字符在该字符串中出现的次数,完成时间:20分钟,29,共性问题集中讲解,常见调试问题及解决办法 代码规范问题,共性问题集中讲解,30,StringBuider类4-1,StringBuilder:String增强版 StringBuilder声明StringBuilder的使用,StringBuilder sb = new StringBuilder (); StringBuilder sb = new StringBuilder (“
15、aaa“);,创建空StringBuilder对象,创建一个变量存储字符串aaa,sb.ToString(); /转化为String类型,sb.Append(“*“); /追加字符串,31,class sbAppend static void Main(String args) StringBuilder sb = new StringBuilder(“青春无悔“); int num=110;StringBuilder sb1 = sb.Append(“我心永恒“); Console.WriteLine(sb1);StringBuilder sb2 = sb1.Append(啊); Conso
16、le.WriteLine(sb2);StringBuilder sb3 = sb2.Append(num); Console.WriteLine(sb3); ,StringBuilder类4-2,相当于sb3.ToString(),32,利用StringBuilder类的Length属性和Insert ()方法实现需求,StringBuilder类4-3,7、将一个数字字符串转换成逗号分隔的数字串,即从右边开始每三个数字用逗号分隔,33,class TestInsert static void Main(String args) Console.Write(“请输入一串数字: “);Strin
17、g nums = Console.ReadLine();StringBuilder str=new StringBuilder(nums);for(int i=str.Length-3;i0;i=i-3)str.Insert(i,);Console.Write(str); ,StringBuilder类4-4,从后往前每隔三位添加逗号,获取长度,34,指导实现商品批发总金额显示,训练要点: StringBuilder类的使用 方法的定义和使用 需求说明: 登录验证通过后,显示批发商品信息;输入批发商品编号和数量,以指定格式显示总金额 实现思路: 1、创建类Goods 2、创建方法Show() 3、创建方法Change() 难点指导: 格式化输出,讲解需求说明,完成时间:20分钟,35,共性问题集中讲解,常见调试问题及解决办法 代码规范问题,共性问题集中讲解,36,总结,如何定义一个String类的实例? 使用什么方法可以实现以下功能: 获得字符串的长度 在原始字符串后追加另一个字符串 如何比较两个字符串的内容是否相等 使用StringBuilder的优点是什么?,37,