第五周课程总结实验报告(三)

 

实验三 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)                             //元素在数组中的位置,如果没有搜素到则返回-1
25         {
26             number=Sent.indexOf(sent,i);              //indexOf() 方法可返回数组中某个指定的元素位置
27                                                       //array.indexOf(item,start);(item:查找元素;start规定在数组中开始检索的位置)
28             if(number==-1)
29             {
30                 return Sum;
31             }
32             else
33             {
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对象,然后赋值给in
11         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值减3
22                 JM = (char) (str.charAt(i) + 3);                                                //强制转换成char
23             }
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对象,然后赋值给in
10         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);                                                //强制转换成char
22             }
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<c.length;i++)
15         {
16             if(c[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             else
25             {
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<c.length;i++)
15         {
16             if(c[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             else
25             {
26                 sumQT = sumQT + 1;
27             }
28         }
29         System.out.println("大写字母数为:"+sumDX);
30         for(i=0;i<c.length;i++)
31         {
32             if (str.charAt(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<c.length;i++)
39         {
40             if (str.charAt(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<c.length;i++)
47         {
48             if(str.charAt(i)<'A'||str.charAt(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

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

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

相关文章

MMKV集成与原理,赶紧学起来

开头 Web前端开发基础知识学习路线分享&#xff0c;前端开发入门学习三大基础&#xff1a;HTML、CSS、JavaScript。除此之外还要学习数据可视化、Vue、React、Angular相关框架&#xff0c;熟练运用框架提升开发效率&#xff0c;提升稳定性。 [外链图片转存失败,源站可能有防盗…

MMKV集成与原理,轻松拿下offer

从事前端开发工作差不多3年了&#xff0c;自己也从一个什么都不懂的小白积累了一定的理论和实践经验&#xff0c;并且自己也对这3年来的学习实践历程有一个梳理&#xff0c;以供后面来细细回忆品味。 1、为什么选择学习前端开发&#xff1f; 你可能是因为兴趣&#xff0c;完成…

React面试题总结,一文说清!

前言 JavaScript是面向 Web 的编程语言&#xff0c;获得了所有网页浏览器的支持&#xff0c;是目前使用最广泛的脚本编程语言之一&#xff0c;也是网页设计和 Web 应用必须掌握的基本工具。 JavaScript主要用途 嵌入动态文本与HTML页面对浏览器时间做出相应读写HTML元素在数…

React面试题总结,含爱奇艺,小米,腾讯,阿里

前言 校招 -1 年 这个阶段还属于成长期&#xff0c;更需要看重的是你的基础和热情。对于 JS 基础&#xff0c;计算机基础&#xff0c;网络通信&#xff0c;算法等部分的要求会相对高一些。毕竟这个阶段比较难考察你的业务项目中的沉淀&#xff0c;所以只能从基础部分入手考察。…

React面试题总结,就是这么简单

前言 昨天有幸去字节面试了&#xff0c;顺便拿到了offer&#xff0c;把还记得的东西写下来&#xff0c;供大家参考一下。 计算机网络篇 HTTP HTTP 报文结构是怎样的&#xff1f;HTTP有哪些请求方法&#xff1f;GET 和 POST 有什么区别&#xff1f;如何理解 URI&#xff1f;如…

CSS清除默认样式,成功入职腾讯

前言 又逢金三银四&#xff0c;拿到大厂的offer一直是程序员朋友的一个目标&#xff0c;我是如何拿到大厂offer的呢&#xff0c;今天给大家分享我拿到大厂offer的利器&#xff0c;前端核心知识面试宝典&#xff0c;内容囊括Html、CSS、Javascript、Vue、HTTP、浏览器面试题\数…

CSS清除默认样式,技术详细介绍

前言 JavaScript是面向 Web 的编程语言&#xff0c;获得了所有网页浏览器的支持&#xff0c;是目前使用最广泛的脚本编程语言之一&#xff0c;也是网页设计和 Web 应用必须掌握的基本工具。 JavaScript主要用途 嵌入动态文本与HTML页面对浏览器时间做出相应读写HTML元素在数…

CSS清除默认样式,看完这篇彻底明白了

前端的兴起 前端真正兴起和开始频繁出现在大家的视线里&#xff0c;大概是在十年前。彼时的 Web 开发基本是由后端主导&#xff0c;前端能做的只是校验一下数据、操作一下 DOM。&#xff08;其中数据检验是 JS 产生的根本原因&#xff1a;当时网络太慢&#xff0c;在服务端检验…

CSS清除默认样式,经典好文

前言 不要为了面试而去背题&#xff0c;匆匆忙忙的&#xff0c;不仅学不进去&#xff0c;背完了几天后马上会忘记。 你可能会说&#xff0c;“没办法&#xff0c;这不是为了能找份工作嘛&#xff01;”。我想说的是&#xff0c;“那你没开始找工作的时候&#xff0c;咋不好好…

java实现k-means算法(用的鸢尾花iris的数据集,从mysq数据库中读取数据)

k-means算法又称k-均值算法&#xff0c;是机器学习聚类算法中的一种&#xff0c;是一种基于形心的划分方法&#xff0c;其中每个簇的中心都用簇中所有对象的均值来表示。其思想如下&#xff1a; 输入&#xff1a; k&#xff1a;簇的数目&#xff1b;D&#xff1a;包含n个对象的…

CSS清除默认样式,聪明人已经收藏了!

1、ant-design的使用总结及常用组件和他们的基本用法? ant-design为React&#xff0c;Angular和Vue都提供了组件&#xff0c;同时为PC和移动端提供了常用的基础组件。ant-design提供的demo非常的丰富并且样式能够基本的覆盖开发需求。antd的Demo因为是多人编写的&#xff0c;…

浅谈“==”、equals和hashcode,以及map的遍历方法(可用作上一篇k-means博文参考)

前不久看到一个公司的面试题&#xff0c;问到“”和“equals”的区别&#xff0c;些许上答不上来&#xff0c;于是木羊搜索并整理了一下。此外&#xff0c;木羊前面写了k-means算法实现的博文&#xff0c;其中提到要重写equals和hashcode类&#xff0c;看完这篇博文&#xff0c…

CSS清除默认样式,面试篇

前言 过完年了&#xff0c;准备实习的你是已经在实习了&#xff0c;还是已经辞职回家过年&#xff0c;准备年后重新找工作呢&#xff0c;又或者是准备2021年春招&#xff1f; 那么还没没踏出校门或者是刚出校门没多久的同学们该如何准备前端校招的面试呢&#xff1f; 学习建议…

CSS的三种基础选择器,面试必问

前言 最近在准备面试&#xff0c;然后复习下之前写过的项目&#xff0c;书籍&#xff0c;笔记&#xff0c;文章。一看很多知识点都没有印象&#xff0c;最可拍的是连自己为了防止忘记写的文章竟然都感觉不是自己写的。有些开始怀疑人生了。 好了&#xff0c;废话少说&#xf…

html知识笔记(一)——head和body标签

标签的用途&#xff1a;我们学习网页制作时&#xff0c;常常会听到一个词&#xff0c;语义化。那么什么叫做语义化呢&#xff0c;说的通俗点就是&#xff1a;明白每个标签的用途&#xff08;在什么情况下我可以使用这个标签才合理&#xff09;比如&#xff0c;网页上的文章的标…

CSS的三种定位,100%好评!

前言 跳槽&#xff0c;这在 IT 互联网圈是非常普遍的&#xff0c;也是让自己升职加薪&#xff0c;走上人生巅峰的重要方式。那么作为一个普通的Android程序猿&#xff0c;我们如何才能斩获大厂offer 呢&#xff1f; 疫情向好、面试在即&#xff0c;还在迷茫踌躇中的后浪们&…

CSS的三种定位,成功入职字节跳动

前言 校招 -1 年 这个阶段还属于成长期&#xff0c;更需要看重的是你的基础和热情。对于 JS 基础&#xff0c;计算机基础&#xff0c;网络通信&#xff0c;算法等部分的要求会相对高一些。毕竟这个阶段比较难考察你的业务项目中的沉淀&#xff0c;所以只能从基础部分入手考察。…

html知识笔记(三)——img标签、form表单

<img>标签&#xff1a;在网页中插入图片。 语法&#xff1a; <img src"图片地址" alt"下载失败时的替换文本" title "提示文本"> 举例&#xff1a; <img src "myimage.gif" alt "My Image" title "…

CSS的三种定位,月薪30K

毕业工作一年之后&#xff0c;有了转行的想法&#xff0c;偶然接触到程序员这方面&#xff0c;产生了浓厚且强烈的兴趣&#xff0c;开始学习前端&#xff0c;成功收割了大厂offer&#xff0c;开始了我的程序员生涯。 在自学过程中有过一些小厂的面试经历&#xff0c;也在一些小…

HTML列表标签,大牛最佳总结

前言 跳槽&#xff0c;这在 IT 互联网圈是非常普遍的&#xff0c;也是让自己升职加薪&#xff0c;走上人生巅峰的重要方式。那么作为一个普通的Android程序猿&#xff0c;我们如何才能斩获大厂offer 呢&#xff1f; 疫情向好、面试在即&#xff0c;还在迷茫踌躇中的后浪们&…