博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第五周课程总结&实验报告(三)
阅读量:5291 次
发布时间:2019-06-14

本文共 8319 字,大约阅读时间需要 27 分钟。

 

实验三 String类的应用

一、实验目的

(1) 掌握类String类的使用;

(2) 学会使用JDK帮助文档;

二、实验内容

1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码、结果截图。)

① 统计该字符串中字母s出现的次数。

② 统计该字符串中子串“is”出现的次数。

③ 统计该字符串中单词“is”出现的次数。

④ 实现该字符串的倒序输出。

三、实验过程(请自己调整格式)

代码:

 
1 package com.company; 2  3 public class Main 4 { 5     public static void main(String[] args) 6     { 7         String sent ="this is a test of java";          //实例化String 对象 8         int sSum=sum("s",sent); 9         int isSum=sum("is",sent);10         int _is_Sum=sum(" is ",sent);11 12         StringBuffer str=new StringBuffer(sent);       //声明StringBuffer对象13         str=str.reverse();                             //reverse()方法表示将一个输入流倒叙输出14         System.out.println(sSum);15         System.out.println(isSum);16         System.out.println(_is_Sum);17         System.out.println(str);18     }19 20     static int sum(String sent,String Sent)21     {22         int Sum=0,number=0,i=0;23 24         while(number!=-1)                             //元素在数组中的位置,如果没有搜素到则返回-125         {26             number=Sent.indexOf(sent,i);              //indexOf() 方法可返回数组中某个指定的元素位置27                                                       //array.indexOf(item,start);(item:查找元素;start规定在数组中开始检索的位置)28             if(number==-1)29             {30                 return Sum;31             }32             else33             {34                 Sum++;35                 i=number+1;36             }37         }38         return Sum;39     }40 }

运行中的错误:

 

 第一个错误:类StringBuffer拼写错误;

第二个错误: 在句的后面我手贱的打了一个“;”

 

第三个错误:求的Sum的首字母我忘记大写了; 

运行结果截图:

 

 

2.请编写一个程序,使用下述算法加密或解密用户输入的英文字串。要求源代码、结果截图。

 

 

代码:(加密)

1 package com.company; 2  3 import  java.util.Scanner; 4  5 public class Main 6 { 7  8     public static void main(String[] args) 9     {10         Scanner input = new Scanner(System.in);            //新创建一个输入的Scanner对象,然后赋值给in11         System.out.print("输入要加密的字符:");12         String str = "" ;13         String str1 = "";14         int CD = 0,i ;15         str =input.nextLine();                            //接受输入的数据16         CD = str.length();17         char JM = 0;18         for(i = 0; i < CD; i++)19         {20             if((str.charAt(i)>64&&str.charAt(i)<88)||(str.charAt(i)>96&&str.charAt(i)<120))     //str.charAt(i)的意思是第i个字符在字符串str中所占的位置,输出的是数字21             {                                                                                   //a-w和A-W往后移三位就是把它们的ASCII值减322                 JM = (char) (str.charAt(i) + 3);                                                //强制转换成char23             }24             else if((str.charAt(i)>87&&str.charAt(i)<91)||(str.charAt(i)>119&&str.charAt(i)<123))25             {                                                                                   //而x、y、z、X、Y、Z,他们的ASCII值减23,得重新回到字母首字母26                 JM = (char) (str.charAt(i) - 23);27             }28                 str1 = str1 + JM;29 30         }31         System.out.println("加密后的字符串是:"+str1);32     }33 }

遇到的问题:

 

 没有给str和str1设定初始化

 

 输入不了加密字符,后来通过百度知道,要运用“str =input.nextLine(); ”表示:读取一行输入,并存到str

运行结果:(加密)

 代码:(解密)

1 package com.company; 2  3 import java.util.Scanner; 4  5 public class Main { 6  7     public static void main(String[] args) 8     { 9         Scanner input = new Scanner(System.in);            //新创建一个输入的Scanner对象,然后赋值给in10         System.out.print("输入要解密的字符:");11         String str = "" ;12         String str1 = "";13         int CD = 0,i ;14         str =input.nextLine();                            //接受输入的数据15         CD = str.length();16         char JM = 0;17         for(i = 0; i < CD; i++)18         {19             if((str.charAt(i)>99&&str.charAt(i)<123)||(str.charAt(i)>67&&str.charAt(i)<90))     //str.charAt(i)的意思是第i个字符在字符串str中所占的位置,输出的是数字20             {21                 JM = (char) (str.charAt(i) - 3);                                                //强制转换成char22             }23             else if((str.charAt(i)>64&&str.charAt(i)<68)||(str.charAt(i)>96&&str.charAt(i)<100))24             {25                 JM = (char) (str.charAt(i) + 23);26             }27             str1 = str1 + JM;28 29         }30         System.out.println("解密后的字符串是:"+str1);31     }32 }

 

 

遇到的问题:

 

 解密不出来,然后发现是判断条件出现错误,我只考虑了abc大小写和xyz大小写,中间的字母没有考虑进去

运行结果:(解密)

 

 

 

3.已知字符串“ddejidsEFALDFfnef2357 3ed”。输出字符串里的大写字母数,小写英文字母数,非英文字母数

 代码:

1 package com.company; 2  3 public class Main 4 { 5  6     public static void main(String[] args) 7     { 8  9         String str = "ddejidsEFALDFfnef2357 3ed";10         char [] c = str.toCharArray();                //public char[] toCharArray()将字符串转成char字符数11                                                        //字符串转为二进制数组,二进制转回字符串12         int i, sumDX = 0, sumXX = 0, sumQT = 0;13 14         for(i=0;i
='A'&&c[i]<='Z')17 {18 sumDX = sumDX + 1;19 }20 else if(c[i]>='a'&&c[i]<='z')21 {22 sumXX = sumXX + 1;23 }24 else25 {26 sumQT = sumQT + 1;27 }28 }29 30 System.out.println("大写字母数为:"+sumDX);31 System.out.println("小写字母数为:"+sumXX);32 System.out.println("非英文字母数为:"+sumQT);33 }34 }

 

1 package com.company; 2  3 public class Main 4 { 5  6     public static void main(String[] args) 7     { 8  9         String str = "ddejidsEFALDFfnef2357 3ed";10         char [] c = str.toCharArray();                 //public char[] toCharArray()将字符串转成char字符数11                                                       //字符串转为二进制数组,二进制转回字符串12         int i, sumDX = 0, sumXX = 0, sumQT = 0;13 14         for(i=0;i
='A'&&c[i]<='Z')17 {18 sumDX = sumDX + 1;19 }20 else if(c[i]>='a'&&c[i]<='z')21 {22 sumXX = sumXX + 1;23 }24 else25 {26 sumQT = sumQT + 1;27 }28 }29 System.out.println("大写字母数为:"+sumDX);30 for(i=0;i
= 'A' && str.charAt(i) <= 'Z') {33 System.out.print(str.charAt(i));34 }35 }36 37 System.out.println("\n"+"小写字母数为:"+sumXX);38 for(i=0;i
= 'a' && str.charAt(i) <= 'z') {41 System.out.print(str.charAt(i));42 }43 }44 45 System.out.println("\n"+"非英文字母数为:"+sumQT);46 for(i=0;i
'z')49 {50 System.out.print(str.charAt(i));51 }52 }53 54 55 }56 }

 

遇到的问题:

不会把字符串分解,后来通过翻书P111【例5.25】中有我想要的操作,找到了public char[] to CharArray(),然后依葫芦画瓢

 

 

 运行结果:

 

 

 

四、 总结:

 一、为什么要继承:

代码存在重复,导致后果就是代码量大且臃肿,,而且维护性不高(维护性主要是后期需要修改的时候,就需要修改很多的代码,容易出错)。

二、继承类型:

Java 不支持多继承,但支持多重继承。

单继承

public classA

{

        ......

}

public class B extends A

{

        .......

}

多重继承

public class A{.........}

public class B extends A{.........}

public class C extends B{.........}

不同类继承同一个类

public class A{.............}

public class B extends A {.............}

public class C extends A {.............} 

多继承

public class A {...........}

public class B {...........}

public class C extends A,B{.............}

三、继承的特性

1、子类拥有父类非private的属性、方法

2、子类可以拥有自己的属性和方法,即子类可以对父类进行扩展

3、子类可以用自己的方法实现父类的方法

4、Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。

5、提高了类之间的耦合性(继承的缺点:耦合性高就会造成代码之间的联系越紧密,代码独立性越差)

四、继承的关键字

继承可以使用 extends 和 implements 这两个关键字来实现继承,而且所有的类都是继承于 java.lang.Object,当一个类没有继承的两个关键字,则默认继承object(这个类在 java.lang 包中,所以不需要 import )祖先类。

(1)extends        只能继承一个类

(2)implements  使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)

(3)super            实现对父类成员的访问,用来引用当前对象的父类

(4)this                指向自己的引用

(5)final               可以把类定义为不能继承的,或者用于修饰方法,该方法不能被子类重写

注意:实例变量也可以被定义为 final,被定义为 final 的变量不能被修改。被声明为 final 类的方法自动地声明为 final,但是实例变量并不是 final

五、本次作业中学到的知识点

1、charAt(i) 函数 是获取字符串中i位置的字符     str.charAt(i)的意思是第i个字符在字符串str中所占的位置,输出的是数字

2、“importjava.util.*;”和“importjava.util.Scanner;”的区别:(*表示的是通配符,包括util的所有类,而Scanner表示的是一个具体的类。实际开发中都采用“importjava.util.Scanner;”这种用法,因为程序中没用到的包导入的话只会影响程序效率。)

(1)“importjava.util.*;”表示的是把util这个包下的全部类导入到程序中;而“importjava.util.Scanner;”表示的是只把util包下的Scanner类导入到程序中;

(2)导入“importjava.util.*;”后程序中后面如果要用到util包里面的别的类都不需要再重新导入包了,而如果导入“importjava.util.Scanner;”的话,程序中后面如果要用到util包的别的类,都要再次导入这个类对应的包才能使用;

3、reverse()方法表示的是将一个输入流倒叙输出。(此方法针对的是io流,不能针对字符串。)

转载于:https://www.cnblogs.com/TheMatrixOfTYY/p/11558744.html

你可能感兴趣的文章
三种List集合的遍历方式
查看>>
对List集合中的对象进行按某个属性排序
查看>>
MySql查询当天、本周、本月、本季度、本年的数据
查看>>
dashboard安装
查看>>
heapset水平自动扩容
查看>>
mysql explain用法和结果的含义
查看>>
处理Mybatis返回的结果集为Map类型
查看>>
无法恢复master数据库。SQL Server 无法运行
查看>>
无法打开数据库‘Data’.恢复操作已将数据库标记为SUSPECT。
查看>>
活久现
查看>>
asp.net mvc中配置全局异常过滤器
查看>>
B/S神思SS628(100)身份证阅读器开发
查看>>
Do What you want
查看>>
IPv6 关于路由器配置静态IPv6路由的命令
查看>>
查看linux 用户登录信息及ip
查看>>
Linux系统测试端口连通性的方法
查看>>
联想think system sr550信息
查看>>
linux系统物理cpu信息查询
查看>>
shell 符号的定义(一)
查看>>
开源网络漏洞扫描软件
查看>>