加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 07:33:38 所属栏目:Java 来源:网络整理
导读:? 实验三 String类的应用 一、实验目的 (1) 掌握类String类的使用; (2) 学会使用JDK帮助文档; 二、实验内容 1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码、结果截图。) ① 统计该字符串中字母s出现的次数。 ② 统计该字

?

实验三 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 }

?

遇到的问题:

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

?

?

?运行结果:

?

四、 总结:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读